VSCodeの拡張機能のphp-intellisenseはインストールはしたものの上手く動かないケースがあります。よくある確認箇所について紹介します。 そもそも動作してる? php-intellise…
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(違反)している内容の詳細が確認できます。
複雑さが高すぎるとか、コピペされたソースがあるとか、バグを含む可能性がある等々…
問題が小さいうちに手を付けて修正を進めましょう。
コメントを書く