コードメトリックスの値Code metrics values

また、最新のソフトウェアアプリケーションが複雑になるほど、コードの信頼性と保守性が向上します。The increased complexity of modern software applications also increases the difficulty of making the code reliable and maintainable. コード メトリックスとは、開発者が開発中のコードをより理解できるようにする、ソフトウェアの一連の基準です。Code metrics is a set of software measures that provide developers better insight into the code they are developing. コードメトリックスを利用することにより、開発者は、どの型やメソッドを作成し直すか、さらに詳細にテストする必要があるかを理解できます。By taking advantage of code metrics, developers can understand which types and/or methods should be reworked or more thoroughly tested. 開発チームは、潜在的なリスクを特定し、プロジェクトの現在の状態を把握し、ソフトウェア開発中の進行状況を追跡できます。Development teams can identify potential risks, understand the current state of a project, and track progress during software development.

開発者は、Visual Studio を使用して、マネージコードの複雑さと保守性を測定するコードメトリックスデータを生成できます。Developers can use Visual Studio to generate code metrics data that measure the complexity and maintainability of their managed code. コードメトリックスデータは、ソリューション全体または単一のプロジェクトに対して生成できます。Code metrics data can be generated for an entire solution or a single project.

Visual Studio でコードメトリックスデータを生成する方法の詳細については、「方法: コードメトリックスデータを生成する」を参照してください。For information about how to generate code metrics data in Visual Studio, see How to: Generate code metrics data.

ソフトウェアの測定Software measurements

次の一覧は、Visual Studio によって計算されるコードメトリックスの結果を示しています。The following list shows the code metrics results that Visual Studio calculates:

  • 保守容易性のインデックス-コードを維持するための相対的な容易さを表す 0 ~ 100 のインデックス値を計算します。Maintainability Index - Calculates an index value between 0 and 100 that represents the relative ease of maintaining the code. 値が大きい場合は、保守性が向上します。A high value means better maintainability. 色分けされた評価を使用して、コード内の問題点をすばやく特定できます。Color coded ratings can be used to quickly identify trouble spots in your code. 緑色の評価は 20 ~ 100 の範囲であり、コードの保守性が優れていることを示しています。A green rating is between 20 and 100 and indicates that the code has good maintainability. 黄色の評価は 10 ~ 19 で、コードが適度に保守可能であることを示します。A yellow rating is between 10 and 19 and indicates that the code is moderately maintainable. 赤色の評価は、0 ~ 9 の評価であり、保守性が低いことを示します。A red rating is a rating between 0 and 9 and indicates low maintainability. 詳細については、「保守容易性のインデックスの範囲」と「ブログの投稿」を参照してください。For more information, see the Maintainability index range and meaning blog post.

  • サイクロマティック複雑度-コードの構造的な複雑さを測定します。Cyclomatic Complexity - Measures the structural complexity of the code. これは、プログラムのフロー内のさまざまなコードパスの数を計算することによって作成されます。It is created by calculating the number of different code paths in the flow of the program. 複雑な制御フローを持つプログラムは、適切なコードカバレッジを実現するためにより多くのテストを必要とし、保守が少なくなります。A program that has complex control flow requires more tests to achieve good code coverage and is less maintainable. 詳細については、「サイクロマティック複雑性」の Wikipedia のエントリを参照してください。For more information, see the Wikipedia entry for cyclomatic complexity.

  • 継承の深さ-基底クラスに戻るために、相互に継承されるさまざまなクラスの数を示します。Depth of Inheritance - Indicates the number of different classes that inherit from one another, all the way back to the base class. 継承の深さは、基底クラスの変更が継承されたクラスに影響を与える可能性があるという点で、クラス結合と似ています。Depth of Inheritance is similar to class coupling in that a change in a base class can affect any of its inherited classes. この値が大きいほど、継承が深いほど、基底クラスの変更によって重大な変更が発生する可能性が高くなります。The higher this number, the deeper the inheritance and the higher the potential for base class modifications to result in a breaking change. 継承の深さを小さくするために、低い値は良好で、大きな値は悪くなります。For Depth of Inheritance, a low value is good and a high value is bad.

  • クラス結合-パラメーター、ローカル変数、戻り値の型、メソッドの呼び出し、ジェネリックまたはテンプレートのインスタンス化、基底クラス、インターフェイスの実装、外部型で定義されたフィールド、および属性の装飾を使用して、一意のクラスへの結合を測定します。Class Coupling - Measures the coupling to unique classes through parameters, local variables, return types, method calls, generic or template instantiations, base classes, interface implementations, fields defined on external types, and attribute decoration. 優れたソフトウェア設計では、型とメソッドが高い凝集度と低結合を持つ必要があります。Good software design dictates that types and methods should have high cohesion and low coupling. 結合率が高い場合は、他の型との依存関係が多数あるため、再利用と保守が困難な設計が示されます。High coupling indicates a design that is difficult to reuse and maintain because of its many interdependencies on other types. 詳細については、クラス結合に関するブログの投稿を参照してください。For more information, see the Class coupling blog post.

  • [ソースコードの行]-ソースファイルに存在するソースコード行の正確な数を示します (空白行を含む)。Lines of Source code - Indicates the exact number of source code lines that are present in your source file, including blank lines. このメトリックは、Visual Studio 2019 バージョン16.4 と 2.9.5 () 以降で使用できます。This metric is available starting in Visual Studio 2019 version 16.4 and Microsoft.CodeAnalysis.Metrics (2.9.5).

  • 実行可能コードの行-実行可能なコード行または操作のおおよその数を示します。Lines of Executable code - Indicates the approximate number of executable code lines or operations. これは、実行可能コードの操作の数です。This is a count of number of operations in executable code. このメトリックは、Visual Studio 2019 バージョン16.4 と 2.9.5 () 以降で使用できます。This metric is available starting in Visual Studio 2019 version 16.4 and Microsoft.CodeAnalysis.Metrics (2.9.5). この値は、通常、前のメトリック、つまりレガシモードで使用される MSIL 命令ベースのメトリックであるコード行と密接に一致します。The value is typically a close match to the previous metric, Lines of Code, which is the MSIL-instruction-based metric used in legacy mode.

  • コード行-コード内の行のおおよその数を示します。Lines of Code - Indicates the approximate number of lines in the code. このカウントは IL コードに基づいているため、ソースコードファイル内の行の正確な数ではありません。The count is based on the IL code and is therefore not the exact number of lines in the source code file. 高カウントは、型またはメソッドが過剰な処理を試行していて、分割する必要があることを示している場合があります。A high count might indicate that a type or method is trying to do too much work and should be split up. また、型またはメソッドを維持するのが困難な場合もあります。It might also indicate that the type or method might be hard to maintain.


    コードメトリックスツールのコマンドラインバージョンでは、IL ではなくソースコードが分析されるため、実際のコード行がカウントされます。The command-line version of the code metrics tool counts actual lines of code because it analyzes the source code instead of IL.

匿名メソッドAnonymous methods

匿名メソッドは、名前のないメソッドにすぎません。An anonymous method is just a method that has no name. 匿名メソッドは、コードブロックをデリゲートパラメーターとして渡すために最も頻繁に使用されます。Anonymous methods are most frequently used to pass a code block as a delegate parameter. メソッドやアクセサーなどのメンバーで宣言されている匿名メソッドのコードメトリックスの結果は、メソッドを宣言するメンバーに関連付けられています。Code metrics results for an anonymous method that's declared in a member, such as a method or accessor, are associated with the member that declares the method. これらは、メソッドを呼び出すメンバーに関連付けられていません。They are not associated with the member that calls the method.

生成されたコードGenerated code

一部のソフトウェアツールとコンパイラは、プロジェクトに追加されたコードを生成します。プロジェクト開発者は、表示されないか、変更できません。Some software tools and compilers generate code that is added to a project and that the project developer either does not see or should not change. ほとんどの場合、コードメトリックスは、メトリック値を計算するときに、生成されたコードを無視します。Mostly, Code Metrics ignores generated code when it calculates the metrics values. これにより、メトリック値に、開発者が表示および変更できる内容を反映させることができます。This enables the metrics values to reflect what the developer can see and change.

Windows フォーム用に生成されたコードは、開発者が表示および変更できるコードであるため、無視されません。Code generated for Windows Forms is not ignored, because it is code that the developer can see and change.

次の手順Next steps