phpmdを入れてみました。
その時のメモです。
前提
・MAC OS X EI Capitan バージョン 10.11.6
・composerコマンドが使える
phpmdのインストール
コマンド
composer global require "phpmd/phpmd"
コマンド結果
こんな感じなら成功です。
xxxxxxxxxx:~ xxxxxxxxxx$ composer global require "phpmd/phpmd" Changed current directory to /Users/xxxxxxxxxx/.composer Using version ^2.6 for phpmd/phpmd ./composer.json has been created Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 5 installs, 0 updates, 0 removals - Installing symfony/filesystem (v3.2.6) Downloading: 100% - Installing symfony/dependency-injection (v3.2.6) Downloading: 100% - Installing symfony/config (v3.2.6) Downloading: 100% - Installing pdepend/pdepend (2.5.0) Downloading: 100% - Installing phpmd/phpmd (2.6.0) Downloading: 100% symfony/dependency-injection suggests installing symfony/yaml () symfony/dependency-injection suggests installing symfony/expression-language (For using expressions in service container configuration) symfony/dependency-injection suggests installing symfony/proxy-manager-bridge (Generate service proxies to lazy load them) symfony/config suggests installing symfony/yaml (To use the yaml reference dumper) Writing lock file Generating autoload files
どこでも使えるように設定
lnコマンドの失敗
sudo ln -s /Users/xxxxxxxx/.composer/vendor/phpmd/phpmd/src/bin/phpmd /usr/bin/phpmd
ln: /usr/bin/phpmd: Operation not permitted
原因を調べてみるとどうやらOS起因っぽく、Rootlessという機能を無効にすればよさそうでした。
Rootless無効化手順
・Macをリカバリーモードで起動(起動時に「Command + R」を押し続ける)
・ターミナルで下記コマンドを打つ
csrutil disable
・再起動で官僚。
再度、lnコマンドを打つと成功するはずで、ここまででphpmdの導入は完了です!
phpmdの動作確認
使い方
# phpmd [ファイル名|ディレクトリ] [レポートフォーマット(text or xml)] [ルール]
引数に設定するルールについては以下となります。
コマンド | 説明 |
---|---|
codesize | 循環的複雑度などコードサイズ関連部分を検出するルール |
controversial | キャメルケースなど議論の余地のある部分を検出するルール |
design | ソフトの設計関連の問題を検出するルール |
naming | 長すぎたり、短すぎたりする名前を検出するルール |
unusedcode | 使われていないコードを検出するルール |
複数確認したい場合、カンマ区切りで利用するようです。
$ phpmd test.php text codesize,controversial
例
テストコード(index.php)
<?php class test_class { public function test_function( $test_param ) { } }
実行コマンド及び結果
phpmd index.php text codesize,controversial,design,naming,unusedcode /private/var/www/index.php:4 The class test_class is not named in CamelCase. /private/var/www/index.php:6 The method test_function is not named in camelCase. /private/var/www/index.php:6 The parameter $test_param is not named in camelCase. /private/var/www/index.php:6 Avoid unused parameters such as '$test_param'.
結果をGoogle翻訳にかけてみた。
phpmd index.phpテキストコード化、論争、デザイン、ネーミング、未使用コード /private/var/www/index.php:4 test_classクラスはCamelCaseでは名前が付けられていません。 /private/var/www/index.php:6 test_functionメソッドの名前はcamelCaseでは指定されていません。 /private/var/www/index.php:6パラメータ$ test_paramの名前はcamelCaseでは指定されていません。 /private/var/www/index.php:6 '$ test_param'のような未使用のパラメータは避けてください。
良い感じですね!
あとはこれを使ってソースコードのチェックをする習慣がつけば完璧ですね!!
エディターと連携してsave毎にチェックが入るといいかも!?
とりあえず今回はここまでw

- 作者: Kevin Tatroe,Peter MacIntyre,Rasmus Lerdorf,高木正弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/03/25
- メディア: 大型本
- この商品を含むブログ (8件) を見る