このセクションでは、C++test を使用してメトリクスを計測する方法を説明します。
このセクションの内容:
メトリクスの概要
C++test のメトリクス解析機能は、コードの複雑度、オブジェクト間の結合度、凝集性の欠如など、さまざまなメトリクスを計測し、コードの評価や変更のモニターに役立ちます。特に、メトリクスの計測と追跡は以下の点で役に立ちます。
- コードの複雑度や、他のクラスでの変更がどのような影響を与えるかをより正確に把握できます。これにより、より多くの情報に基づいてコードの変更、リファクタリング、テストを行うことができます。
- 一部の不適切な設計を検出し、コードの潜在的な弱点を把握できます。
メトリクス解析ルールを実行するには、メトリクス カテゴリのビルトイン コンフィギュレーションを実行します。
メトリクスの参照
メトリクス解析の結果は、DTP サーバーで参照できます。DTP との接続方法については、「Development Testing Platform との接続」を参照してください。メトリクス解析の結果は、C++test が生成するローカルの HTML または XML レポートには含まれていません。
メトリクス設定のカスタマイズ
メトリクスを設定するには、DTP のテスト コンフィギュレーション インターフェイスにある [メトリクス] タブを使用します。
- DTP で、歯車のアイコン メニューから[テスト コンフィギュレーション] を選択します。
- テスト コンフィギュレーションを選択して [メトリクス] タブをクリックし、メトリクスのカスタマイズとドキュメントの参照を行います。
詳細については Development Testing Platform のマニュアルを参照してください。
メトリクスのしきい値の設定
上限と下限を設定し、計測されたメトリクスが指定された値範囲外にある場合に静的解析違反をレポートすることができます。たとえば、プロジェクトで論理行数を制限したい場合、論理行数メトリクスが制限を超えた場合に違反をレポートするよう、メトリクスのテスト コンフィギュレーションを設定できます。
C++test に付属のメトリクスのテスト コンフィギュレーションには、デフォルトのしきい値が設定されています。ファイル数 (METRIC.NOF) ルールなど、しきい値を設定できないメトリクスもあります。メトリクスのしきい値を設定するには、次の方法があります。
- DTP のテスト コンフィギュレーション インターフェイスを使用する。
- テスト コンフィギュレーション ファイルを手で編集する。
- [Parasoft] メニューの [テスト コンフィギュレーション] をクリックし、[ビルトイン] に移動します。テスト コンフィギュレーションを選択して右クリックし、[エクスポート] をクリックして、コンフィギュレーションを .properties ファイルとして保存します。
- エクスポートされた .properties ファイルをエディターで開いて
[METRIC.ID].ThresholdEnabled
プロパティに true を指定します。 - 次の書式に従って、
[METRIC.ID].Threshold
プロパティに上限及び下限を指定します。[METRIC.ID].Threshold=l [lower boundary value] g [upper boundary value]
ファイルを保存して [Parasoft] メニューの [テスト コンフィギュレーション] をクリックします。
[ユーザー定義] フォルダーを右クリックして [インポート] をクリックし、編集済みのテスト コンフィギュレーションを参照して [開く] をクリックします。
ビルトイン メトリクス
以下のメトリクスが利用できます。
- オブジェクト間の結合 [METRIC.CBO]
- McCabe Cyclomatic Complexity [METRIC.CC]
- ファイルの論理行数に対するコメントの割合 [METRIC.CLLOCRIF]
- メソッドの論理行数に対するコメントの割合 [METRIC.CLLOCRIM]
- 型の論理行数に対するコメントの割合 [METRIC.CLLOCRIT]
- ネストされた If 文 [METRIC.DIF]
- Essential Cyclomatic Complexity [METRIC.ECC]
- ファン アウト [METRIC.FO]
- Halstead 難度 [METRIC.HDIFM]
- Halstead 心理的稼働時間 [METRIC.HEFM]
- Halstead インテリジェントコンテント [METRIC.HICM]
- Halstead プログラム長 [METRIC.HLENM]
- Halstead 抽象化レベル [METRIC.HLEVM]
- Halstead 障害件数 [METRIC.HNOBM]
- Halstead プログラミング時間 [METRIC.HTTPM]
- Halstead プログラム語彙数 [METRIC.HVOCM]
- Halstead プログラム容量 [METRIC.HVOLM]
- クラスの継承の深さ [METRIC.IDOC]
- 凝集性の欠如 [METRIC.LCOM]
- Modified Cyclomatic Complexity [METRIC.MCC]
- 保守性インデックス [METRIC.MI]
- ブロックのネストの深さ [METRIC.NBD]
- ファイルの空白行数 [METRIC.NOBLIF]
- メソッドの空白行数 [METRIC.NOBLIM]
- 型の空白行数 [METRIC.NOBLIT]
- クラス数 [METRIC.NOC]
- ファイルのコメント行数 [METRIC.NOCLIF]
- メソッドのコメント行数 [METRIC.NOCLIM]
- 型のコメント行数 [METRIC.NOCLIT]
- ファイル数 [METRIC.NOF]
- ファイルの論理コード行数 [METRIC.NOLLOCIF]
- メソッドの論理コード行数 [METRIC.NOLLOCIM]
- 型の論理コード行数 [METRIC.NOLLOCIT]
- 型のメソッド数 [METRIC.NOMIT]
- メソッドのパラメーター数 [METRIC.NOPAR]
- ファイルの物理コード行数 [METRIC.NOPLIF]
- メソッドの物理コード行数 [METRIC.NOPLIM]
- 型の物理コード行数 [METRIC.NOPLIT]
- 型の private メンバーの数 [METRIC.NOPRIVMIT]
- 型の protected メンバーの数 [METRIC.NOPROTMIT]
- 型の public メンバーの数 [METRIC.NOPUBMIT]
- メソッドの return の数 [METRIC.NORET]
- ファイルのソース行数 [METRIC.NOSLIF]
- メソッドのソース行数 [METRIC.NOSLIM]
- 型のソース行数 [METRIC.NOSLIT]
- 型の数 [METRIC.NOT]
- クラスのレスポンス [METRIC.RFC]
- Strict Cyclomatic Complexity [METRIC.SCC]
- クラスの重み付けされたメソッド [METRIC.WMC]