PHPMDでコード解析を行う
PHPで書かれたコードの解析を行ってくれる「PHPMD」を導入して試してみました。PHPMDは、複雑過ぎる表現や未使用の変数などを指摘してくれます。 この記事では、PHPで書いたサンプルコードの解析を行った結果までを書いています。
開発環境
- Vagrantで構築
- OS: CentOS 7
- PHP: 5.6.30
PHPMD導入
PHPMDの安定版を確認
https://phpmd.org/download/releases/index.html
2017/5/5現在で2系まで出ているので、Composerで2系の安定版を導入
$ php composer.phar require "phpmd/phpmd=~2.0"
導入されたパッケージ確認
$ view composer.json { "require": { "phpmd/phpmd": "~2.0" } }
PHPMD導入確認
$ ./vendor/bin/phpmd -h
使い方や使えるオプションについては、上記のコマンドを叩きヘルプを見たり、PHPMDのGithub(参考に記述)をご確認ください。
コード解析
PHPMDにはコード解析に利用する既存のルールが複数あります。(参考に記述) 今回は、名前に関するルール(Naming Rules)と未使用コードに関するルール(Unused Code Rules)を利用して、以下のサンプルコードを解析します。
サンプルコードを指定ルールで解析
名前の長さや、未使用変数について指摘してくれているのが分かります。
$ ./vendor/bin/phpmd test.php text unusedcode,naming /vagrant/test.php:5 Avoid variables with short names like $t. Configured minimum length is 3. /vagrant/test.php:7 Classes should not have a constructor method with the same name as the class /vagrant/test.php:10 Avoid unused local variables such as '$test'.
指摘された箇所を以下のように修正
修正後のサンプルコードを再度解析
コマンドを叩いても何も表示されず、正しく指摘箇所を修正できたことが分かります。
$ ./vendor/bin/phpmd test.php text unusedcode,naming
まとめ
コマンドを叩くだけでコードの解析解析を行ってくれるのは便利ですね。 今回はコードの解析ルールとして、名前と未使用コードに関数ルールを利用しましたが、他にもまだ複数個あります。 また、独自にカスタマイズしたルールも利用可能ですので、各々の環境に合ったルールを作っていくことも可能です。
参考
https://github.com/phpmd/phpmd
https://phpmd.org/rules/index.html -既存ルール記述