#バドシス 〜 日々のことを続く限り書いてみようと思って 〜

頑張って日々のことを書いていこうと思います。

PHPのコードチェックツール「phpmd」を入れてみた。

プログラミングPHP 第3版

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

 

 

プログラミングPHP 第3版

プログラミングPHP 第3版