コード メトリックス値

コード メトリックスとは、開発者が開発中のコードをより理解できるようにする、ソフトウェアの一連の基準です。開発者は、コード メトリックスを利用することで、作成し直したり、より徹底的なテストを実行したりする必要のある型やメソッドを把握できます。開発チームは、ソフトウェアの開発時に、リスクの可能性を特定し、プロジェクトの現在の状態を把握して、進行状況を追跡できます。

ソフトウェアの測定

Visual Studio によって計算されるコード メトリックスの結果を次に示します。

  • 保守容易性指数 - コードの相対的な保守容易性を表す、0 ~ 100 のインデックス値を算出します。値が大きいほど、保守容易性が優れていることを示します。色分けしたコード評価を使用して、コード内の問題部分をすばやく識別することができます。緑色の評価は 20 ~ 100 の範囲にあることを示し、コードの保守容易性が良好であることを示します。黄色の評価は 10 ~ 19 の範囲にあることを示し、コードの保守容易性が中程度であることを示します。赤の評価は 0 ~ 9 の範囲にあることを示し、保守容易性が低いことを示します。

  • サイクロマティック複雑度 - コードの構造上の複雑さを測定します。これは、プログラムのフローにある、異なるコード パスの数を計算することで作成されます。複雑な制御フローが含まれるプログラムでは、十分なコード カバレッジを実現するためにより多くのテストが必要となり、保守性が低下します。

    [!メモ]

    場合によっては、Visual Studio 2010 のメソッドのサイクロマティック複雑度の計算が旧バージョンと異なります。詳細については、「コード メトリックに関する問題のトラブルシューティング」で Visual Studio 2010 のコードの複雑度の計算における変更点についての説明を参照してください。

  • 継承の深さ - クラス階層構造のルートまでのクラス定義の数を示します。階層構造が深くなるにつれて、特定のメソッドおよびフィールドが定義または再定義されている場所を把握することがより困難になる場合があります。

  • クラス結合度 - パラメーター、ローカル変数、戻り値の型、メソッド呼び出し、ジェネリックまたはテンプレートのインスタンス化、基本クラス、インターフェイス実装、外部の型で定義されたフィールド、および属性による装飾を使用して、一意のクラスへの結合度を測定します。適切なソフトウェア デザインでは、型およびメソッドの連携は高まり、結合性は低くなります。結合性が高いということは、他の型への依存関係が多いために再利用や保守が困難なデザインであることを示します。

  • コード行 - コード内の行の概数を示します。この数は IL コードに基づいているため、ソース コード ファイル内の正確な行数ではありません。数が非常に大きい場合、型またはメソッドでの処理が多すぎるため、分割が必要であることを示すことがあります。また、型やメソッドの保守が困難なことを示す場合もあります。

匿名メソッド

匿名メソッドは、名前を持たないメソッドです。匿名メソッドは、コード ブロックをデリゲート パラメーターとして渡すために最も頻繁に使用されます。メソッドやアクセサーなど、メンバーで宣言されている匿名メソッドのメトリックスの結果は、メソッドを宣言するメンバーに関連付けられます。メソッドを呼び出すメンバーには関連付けられません。

コード メトリックスでの匿名メソッドの扱われ方の詳細については、「匿名メソッドとコード分析」を参照してください。

生成されたコード

一部のソフトウェア ツールおよびコンパイラでは、プロジェクト開発者が確認または変更できないコードが生成され、プロジェクトに追加されます。ほとんどの場合、コード メトリックスでは、メトリックスの値を計算する際に、生成されたコードを無視します。これにより、メトリックスの値には、開発者が確認および変更できる内容を反映できます。

Windows フォーム用に生成されたコードは、開発者が確認および変更できるコードであるため、無視されません。

参照

その他の技術情報

マネージ コードの複雑さと保守性の測定