【PHP】コードの複雑さを調べるPHP静的解析ツールPhpMetricsの紹介

著者:杉浦

【PHP】コードの複雑さを調べるPHP静的解析ツールPhpMetricsの紹介

 ソースコードを静的に(実行せずに)評価する際には様々な指標があります。大体、条件文の多さ、行数、クラスの数、依存関係、抽象度、意味のあるコメントの量あたりを元にして色々計算するのですが、それらすべてを把握するのは困難です。PhpMetricsはそういった指標を計算してレポートを出力してくれる静的解析ツールです。
PhpMetrics
 Composerで提供されているのでインストールは

composer global require phpmetrics/phpmetrics

で十分です。使い方もお手軽です。例えばHTML形式のレポートが欲しいなら

phpmetrics --report-html=[htmlレポートの出力先] --exclude=[調査しないディレクトリA],[調査しないディレクトリB] [調査対象のソースコードのディレクトリ] 

 これだけです。フレームワークやライブラリを用いている場合、[調査しないディレクトリ]を指定しないとそれらを、神クラス――機能が集中しすぎているクラス――扱いして結構な数の警告が出ます。
 実行結果のHTMLを見ると次の様な画面が出ます。

 PhpMetrics report
 とりあえず特に気にするべきなのが赤丸で囲ったViolationsとAverage cyclomatic complexity by classとMaintainability / complexityです。
 Violationsはバグりそう、読み難そうといった原因がはっきりしているコードをその理由付きでリスト化しています。ここに現れたものを解決するだけでいくらかマシになります。

 Average cyclomatic complexity by classはクラス毎の循環複雑度の平均です。この値が大きいと条件文などによる分岐が多いコードということです。分岐が多いと処理を追う際の組み合わせが膨大になり、テストも困難になってしまいます。
 Maintainability / complexityはソースコード中の各クラス、ファイルを図示したものです。色は危険度、大きさはコード量を表しています。この図が小さい緑丸で染まったコードが分かりやすいコードということです。

  • この記事いいね! (1)

著者について

杉浦 administrator