takedajs ログ

備考録

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 -既存ルール記述

PHPの静的コード解析ツール『PHPMD』を使ってみた。