読者です 読者をやめる 読者になる 読者になる

end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転します

PHPMDでphpのコードメトリクス(例:循環的複雑度)を計測

CentOS6.3で静的解析ツールPHPMDを動かしてみる(PHP用) - NAVER まとめ
↑こちらの記載の通リで可能なようです。

PHPMD (PHP Mess Detector)のinstall

$ su -

# pear channel-discover pear.pdepend.org
# pear install pdepend/PHP_Depend-beta

# pear channel-discover pear.phpmd.org
# pear install --alldeps phpmd/PHP_PMD-alpha

PHPMDの実行

$ find . -name "*.php" -exec phpmd {} text codesize \; | grep  Cyclomatic

私の場合、循環的複雑度で見ているので、↑このように実行しますが
↓こちらの通リ、様々な指標を得ることができます。

# phpmd [ファイル名|ディレクトリ] [レポートフォーマット(text or xml)] [ルール]


ルールはデフォルトで以下の5つがあるようです。

・codesize:循環的複雑度などコードサイズ関連部分を検出するルール
・controversial:キャメルケースなど議論の余地のある部分を検出するルール
・design:ソフトの設計関連の問題を検出するルール
・naming:長すぎたり、短すぎたりする名前を検出するルール
・unusedcode:使われていないコードを検出するルール


使い方は、例えばtest.phpを解析してテキストで出力する場合

# phpmd test.php text codesize
# phpmd test.php text controversial
# phpmd test.php text design
# phpmd test.php text naming
# phpmd test.php text unusedcode

というふうに実行できます。

また、以下のようにすると全てのルールを一気に実行できます。
※コンマの後に空白を入れるとダメのようです。

# phpmd test.php text codesize,controversial,design,naming,unusedcode


レポートをxmlで出力したい場合はtextの部分をxmlにすればOKです。

# phpmd test.php xml codesize,controversial,design,naming,unusedcode

CentOS6.3で静的解析ツールPHPMDを動かしてみる(PHP用) - NAVER まとめ