次の方法で共有


コードの指標値

最新のソフトウェア アプリケーションの複雑さが増すにつれて、コードを信頼性と保守性を高めるのも困難になります。 コード メトリックは、開発者が開発しているコードに対するより良い分析情報を提供する一連のソフトウェア メジャーです。 コード メトリックを利用することで、開発者は、どの型またはメソッドを再作業するか、より徹底的にテストするかを理解できます。 開発チームは、潜在的なリスクを特定し、プロジェクトの現在の状態を理解し、ソフトウェア開発中の進行状況を追跡できます。

開発者は、Visual Studio を使用して、マネージド コードの複雑さと保守容易性を測定するコード メトリック データを生成できます。 コード メトリック データは、ソリューション全体または 1 つのプロジェクトに対して生成できます。

Visual Studio でコード メトリック データを生成する方法については、「 方法: コード メトリック データを生成する」を参照してください。

ソフトウェア測定

次の一覧は、Visual Studio が計算するコード メトリックの結果を示しています。

  • 保守容易性インデックス - コードの維持の相対的な容易さを表す 0 ~ 100 のインデックス値を計算します。 値が大きい場合は、保守性が向上します。 色分けされた評価を使用すると、コード内のトラブル スポットをすばやく特定できます。 緑色の評価は 20 から 100 の間であり、コードの保守性が良好であることを示します。 黄色の評価は 10 ~ 19 で、コードが中程度に保守可能であることを示します。 赤の評価は 0 から 9 の間の評価であり、保守容易性が低い状態を示します。 詳細については、「 保守容易性インデックスの範囲と意味」を参照してください。

  • サイクロマティック複雑性 - コードの構造の複雑さを測定します。 これは、プログラムのフロー内の異なるコード パスの数を計算することによって作成されます。 複雑な制御フローを持つプログラムでは、適切なコード カバレッジを実現するためにより多くのテストが必要であり、保守が容易ではありません。 詳細については、 サイクロマティックの複雑さを参照してください。

  • 継承の深さ - 基底クラスに戻って、相互に継承する異なるクラスの数を示します。 継承の深さは、基底クラスの変更が継承されたクラスのいずれかに影響を与えるという点で、クラス結合に似ています。 この数値が大きいほど、継承が深くなり、基底クラスを変更して破壊的変更が発生する可能性が高くなります。 継承の深さの場合、低い値が良く、高い値が悪いです。 詳細については、「 継承の深さ」を参照してください。

  • クラス結合 - パラメーター、ローカル変数、戻り値の型、メソッド呼び出し、ジェネリックまたはテンプレートのインスタンス化、基底クラス、インターフェイス実装、外部型で定義されたフィールド、属性装飾を使用して、一意のクラスへの結合を測定します。 優れたソフトウェア設計により、型とメソッドは高い凝集度と低結合を持つ必要があります。 高結合は、他の型に多くの相互依存関係があるため、再利用と保守が困難な設計を示します。 詳細については、「 クラス結合」を参照してください。

  • ソース コードの行 - ソース ファイルに存在するソース コード行の正確な数 (空白行を含む) を示します。 このメトリックは、Visual Studio 2019 バージョン 16.4 および Microsoft.CodeAnalysis.Metrics (2.9.5) 以降で使用できます。

  • 実行可能コードの行 - 実行可能コード行または操作の概数を示します。 これは、実行可能コード内の操作の数です。 このメトリックは、Visual Studio 2019 バージョン 16.4 および Microsoft.CodeAnalysis.Metrics (2.9.5) 以降で使用できます。 通常、この値は、レガシ モードで使用される MSIL 命令ベースのメトリックである、前 のメトリックであるコード行と密接に一致します。

匿名メソッド

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

生成されたコード

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

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