概要
業務でPHPを使ったウェブサービスを複数人のチームで運営していますが、経年と共にソースコードが劣化してきており、改善とその効果を測るためにScrutinizer CIという静的解析のSaaSを導入しました。
英語のツールのため導入時にチームメンバーに各メトリクスを説明しましたがので、備忘録も兼ねて投稿します。
Scrutinizer CIとは
GitHubのリポジトリを登録することで、ソースコードの静的解析を自動的に行ってくれるサービスです。
詳しい説明は以下の記事がとてもわかりやすかったので、ご参照ください。
各メトリクスの意味
インスペクションの対象がメソッドかクラスかによって、指標の種類が違います。
メソッドレベルのメトリクス
Complexity(複雑度)
項目 | 意味 |
---|---|
Conditions | 制御フロー(ifやループ)を変更する決定ポイントの数。循環的複雑度とも呼ばれる。 |
Paths | 循環を考慮しない異なる実行パスの数。 |
Duplication(重複)
項目 | 意味 |
---|---|
Lines | 重複している行数。 |
Ratio | 重複率。 |
Size(コードサイズ)
項目 | 意味 |
---|---|
Total Lines | メソッドの行数。 |
Code Lines | メソッドの行数から空白や{}だけの行を除外した行数。 |
Importance(重要度)
項目 | 意味 |
---|---|
Changes | オペレーションが最近変更された回数(原則的に過去30日間)。 |
クラスレベルのメトリクス
Coupling/Cohesion(結合度/凝集度)
項目 | 意味 |
---|---|
Components | このクラスの切断されたコンポーネントの数。この数値が少ないほど、単一の責任を持つ集中的なクラスを示すため、一般的には優れている。 |
Dependencies | このクラスが依存する他のクラスの数。この数が少ないほど、クラスが壊れにくくなるため、一般的には優れている。 |
Complexity(複雑度)
項目 | 意味 |
---|---|
Total Complexity | 制御フロー(ifやループ)を変更する決定ポイントの数。 |
Size/Duplication(コードサイズ/重複)
項目 | 意味 |
---|---|
Total Lines | クラスのソースコードの総行数。 |
Duplicated Lines | ソースコードの重複率。 |
Importance(重要度)
項目 | 意味 |
---|---|
Changes | オペレーションが最近変更された回数(原則的に過去30日間)。 |
まとめ
メトリクスについて日本語でまとまっている情報がなかったので何かのお役に立てればと思い書きました。
些か説明が足りない部分もありますが、勉強してわかったことを追記していきます。