現在のプロジェクトですが、コードレビューなどをされる環境にはないため、一人で書いていると自然と規約とずれた書き方になっていることもあります。
規約通りに書こう、書こうと思っていてもなかなかその通りに書くことは大変です。そんな時はコードレビューを自動でチェックしてくれるツールなどを使うのが便利です。phpにはphpmdというツールがあり実装上の問題点などを検出してくれるツールです。
インストール
以前はpearなどでインストールもできていましたが、現在ではcomposerを使ってinstallをすることが一般的でしょう。
下記のようにcomposer.jsonにかいてアップロードすることが一般的です。
1 2 3 4 5 |
{ "require-dev": { "phpmd/phpmd" : "*" } } |
composerに書いて、installすればvendorの下には入ります。ただpathをとおすために下記のようにシンボリックリンクを張ると便利です。
1 2 3 4 |
//シンボリックリンクを張る sudo ln -s ../vendor/phpmd/phpmd/src/bin/phpmd /usr/bin/phpmd //全てに対して実行権限を与える sudo chmod a+x /usr/bin/phpmd |
使い方
あとは実際のコードのチェックを行います。
1 |
phpmd チェックしたいPHPファイルパス text cleancode,codesize,controversial,design,naming,unusedcode |
コマンドの意味ですが、
phpmd チェックしたいPHPファイルパス [レポートフォーマット(text or xml or html)] [チェック項目 カンマ区切りで複数可能]
具体的なチェック項目ですが、下記のような意味です。
- cleancode: elseを使わず、staticアクセスしないなどを検知するツール
- codesize:循環的複雑度などコードサイズ関連部分を検出するルール
- controversial:キャメルケースなど議論の余地のある部分を検出するルール
- design:ソフトの設計関連の問題を検出するルール
- naming:長すぎたり、短すぎたりする名前を検出するルール
- unusedcode:使われていないコードを検出するルール
上記では全て入れていますが・・・コマンドを実行すると下記のようなメッセージが出力されます。
1 2 3 4 5 6 7 8 9 10 11 12 |
具体的なファイルパス:58 Avoid excessively long variable names like $transferDateTypeStatus. Keep variable name length under 20. 具体的なファイルパス:101 Avoid unused parameters such as '$event'. 具体的なファイルパス:134 setUser accesses the super-global variable $_SESSION. 具体的なファイルパス:134 setUser accesses the super-global variable $_SESSION. 具体的なファイルパス:165 The variable $config_arr is not named in camelCase. 具体的なファイルパス:165 The variable $config_arr is not named in camelCase. 具体的なファイルパス:165 The variable $config_arr is not named in camelCase. 具体的なファイルパス:227 The variable $_serialize is not named in camelCase. 具体的なファイルパス:227 The variable $_extension is not named in camelCase. 具体的なファイルパス:227 The variable $_dataEncoding is not named in camelCase. 具体的なファイルパス:227 The variable $_csvEncoding is not named in camelCase. 具体的なファイルパス:244 Avoid unused parameters such as '$event'. |
参考リンク
phpmdについて
phpmd公式
シンボリックリンクについて
[…] phpmdによるコードチェック […]
[…] phpmdによるコードチェック […]