PHPで作成したソースコードの循環的複雑度を調べる
プログラムの複雑度の指標
#Tool
#PHP
#Composer
PHPでのツールの例
PHPmd
インストール方法
code:composer.json
{
"require-dev": {
"phpmd/phpmd" : "@stable"
}
}
code:bash
$ composer install
実行方法
code:bash
$ phpmd /path/to/code text|xml|html|json codesize,unusedcode,naming,cleancode
code:bash
$ phpmd hoge.php xml codesize
$ phpmd hoge.php xml codesize --reportfile phpmd.xml
$ phpmd hoge.php text cleancode
$ phpmd hoge.php text cleancode --reportfile phpmd.txt
$ phpmd hoge.php json codesize,unusedcode,naming,cleancode
結果の見方の例(codesizeの場合)
Cyclomatic Complexity
循環的複雑度 10以下
さまざまな意見があるが、以下の数値がよく使われる。
table:循環的複雑度の指標
循環的複雑度 状態
1-10 テストしやすい安全なコード(対処不要)
11-20 少し複雑なコードなので注意
21-40 テストが難しくなるレベルなので避けるべき
41以上 テスト不可能なので問題あり
NPath complexity
関数内のパスの数 200以下
the number of fields
クラスのフィールド数 15未満
lines of code
メソッド内の行数 100以下
overall complexity
クラスの複雑さ 50未満