Skip to content

Latest commit

 

History

History
42 lines (30 loc) · 3.45 KB

metrics.md

File metadata and controls

42 lines (30 loc) · 3.45 KB

メトリクス

テーマ:不吉な臭いの検出(構文解析結果から得られる範囲で)

M0. 与えられたソースファイルを構文解析せよ.

M1. 与えられたプロジェクトディレクトリに含まれる全ソースファイルを解析し,すべてのクラス/モジュール$C$,メソッド/関数$M$,フィールド/属性$F$を列挙せよ.

M2. 与えられたメソッドの循環的複雑度(サイクロマチック複雑度; Cyclomatic complexity)を計測せよ.

M3. 与えられたクラスの WMC(Weighted Methods per Class)を計測せよ.

WMC はクラスに所属するメソッドの複雑さ重みの和として計算される. メソッドの複雑さ重みには循環的複雑度を用いよ.

M4. メソッドと,メソッドが使用するフィールドの間のUse関係$\to_u: M \times F$を抽出せよ.

M5. 与えられたメソッドがアクセサメソッド(getter/setter)かどうか判定せよ.

M6. メソッド間の呼び出し関係$\to_c: M \times M$を抽出せよ.

M7. 与えられたクラスのATFD(Access To Foreign Data)を計測せよ.

ATFDは,対象クラスから(アクセサメソッドによる間接アクセスも含めて)アクセスしている外部クラスのフィールド数を表す.

M8. 与えられたクラスの TCC(Tight Class Cohesion)を計測せよ.

TCCは凝集度のメトリクスのひとつで,対象クラス内のすべてのメソッド対のうち,同クラスの特定のフィールドに共通してアクセスするものの割合を表す.

M9. 与えられたクラスが不吉な臭いGod Classを持つかを判定せよ.

Object-Oriented Metrics in Practiceによるメトリクスベースの判定戦略によれば,下記を条件をすべて満たすクラスをGod Classとみなす.

  • ATFD > FEW (= 5) (Class uses directly more than a few attributes of other classes)
  • WMC >= VERY HIGH (= 47) [% (Functional complexity of the class is very high)
  • TCC < 1/3 (Class cohesion is low)

閾値にはFEW = 5, VERY HIGH = 47を用いよ. 静的解析ツールPMDによる検出も試み,結果を比較せよ.