はじめに
目次
-
PHPMDとは
- 主な機能
-
導入方法
-
Ruleset
- ルールセットの例
-
composer scripts
- composer.json に追加
-
おわりに
-
参考文献
PHPMDとは
バグやバグの温床になりそうなコードを教えてくれる優れもの。
コマンドを打ったり Circle CI
などを導入すれば push
したときに自動でチェックしてくれるようになるので便利です。
主な機能
・バグの検知
・汚いコードの検知
・複雑なコードの検知
・使用していない引数や関数の検知
導入方法
composer を導入してから 「phpmd」 を導入していきます。(composer 導入方法はこちら)
composer require "phpmd/phpmd=@stable" --dev
これで phpmd
を使うことができるようになりました。
早速使用してみます。
チェックしたいルールを引数に書きます。
./vendor/bin/phpmd [チェックしたいファイル] [フォーマット] [ルール]
# 例えば
./vendor/bin/phpmd sample.php text cleancode,codesize,controversial,design,naming,unusedcode
使用はできますが、なんだか長くて使い勝手が悪いですね。
そこでルールを設定ファイルとして定義します。
Ruleset
自分が決めたルールでコードをチェックできるようになります。
設定ファイルを作成することで毎回ルールをコマンドに入れて打たなくても良いようになります。
ルートディレクトリで設定ファイルを作成します。
touch phpmd.xml
ルールセットの例
<?xml version="1.0"?>
<ruleset name="My first PHPMD rule set"
xmlns="http://pmd.sf.net/ruleset/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0
http://pmd.sf.net/ruleset_xml_schema.xsd"
xsi:noNamespaceSchemaLocation="
http://pmd.sf.net/ruleset_xml_schema.xsd">
<description>
My custom rule set that checks my code...
</description>
<rule ref="rulesets/codesize.xml" />
<rule ref="rulesets/cleancode.xml" />
<rule ref="rulesets/controversial.xml" />
<rule ref="rulesets/design.xml" />
<rule ref="rulesets/naming.xml" />
<rule ref="rulesets/unusedcode.xml" />
</ruleset>
これで設定ファイルを作成してチェックしたいルールを定義することができたので使用してみます。
./vendor/bin/phpmd . text phpmd.xml --suffixes php --exclude vendor
--suffixes はどのファイルをチェックするのか。
--exclude はどのファイルを除くのか。
というオプションを指定しております。
もっと使いやすくするために composer
に登録し簡単にコマンドを打てるようにしていきます。
composer scripts
composer.json
に追加
"scripts": {
"phpmd": "./vendor/bin/phpmd . text phpmd.xml --suffixes php --exclude vendor"
}
composer phpmd
簡単にチェックできるようになりました。
おわりに
一段落するごとにコマンドを打ってチェックしてみると早い段階でバグになりそうなところをチェックすることができるので導入してみてはどうでしょうか。