PhpMetrics ソフトウェアを静的解析!循環的複雑度を分析して改善しよう

PhpMetrics ソフトウェアを静的解析!循環的複雑度を分析して改善しよう

PHPプログラムの複雑度を測定し、グラフィカルに表示できるツールの使い方と味方の紹介です。
コマンド一つで循環的複雑度やMaintainability Indexやクラスの依存関係がHTMLで出力できます。

PhpMetrics

オフィシャルページ(デモはこちら

グラフィカルな表示

Cyclomatic Complexity(循環的複雑度)
クラス内のメソッドの循環的複雑度の値の合計値です。
こちらの数値が円の大きさに表され、大きいほど複雑なクラスです。

Maintainability Index(保守性指標)
保守性を以下の計算式によって求めた数値です。
こちらの数値が良好な場合は、注意が必要な場合は黄色、問題の場合は赤色で表示されます。

171 – 5.2 * LN(Halstead複雑度) – 0.23 * (サイクロマティック複雑度) – 16.2 * LN(コード行数) + 50 * sin(sqrt(2.4 * コメント率))

循環的複雑度とは

条件分岐(if、switch-case)やループ(for)の数をカウントした件数が循環的複雑度です。
通常はメソッド単位で計測した数値で判断します。
1つのメソッドの循環的複雑度の判断基準は以下の表の通りです。

循環的複雑度 複雑さの状態 バグ混入確率
10以下 非常に良い構造 25%
30以上 構造的なリスクあり 40%
50以上 テスト不可能 70%
75以上 いかなる変更も誤修正を生む 98%

クラス別の詳細

Violations(違反)している内容の詳細が確認できます。
複雑さが高すぎるとか、コピペされたソースがあるとか、バグを含む可能性がある等々…
問題が小さいうちに手を付けて修正を進めましょう。

 

PHPカテゴリの最新記事