LoginSignup
2
0

More than 5 years have passed since last update.

Scrutinizer CI の各メトリクスの意味

Posted at

概要

業務で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日間)。

まとめ

メトリクスについて日本語でまとまっている情報がなかったので何かのお役に立てればと思い書きました。
些か説明が足りない部分もありますが、勉強してわかったことを追記していきます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0