Visual Studio でのマネージド コードのレガシ分析の概要

Visual Studio では、マネージド コードのコード分析を 2 とおりの方法で実行できます。レガシ分析 (マネージド アセンブリの FxCop 静的分析とも呼ばれます) を使用する方法と、最新の .NET Compiler Platform ベースのコード アナライザーを使用する方法です。 このトピックでは、レガシ分析について説明します。 .NET Compiler Platform ベースのコード分析の詳細については、.NET Compiler Platform ベースのアナライザーの概要に関する記事をご覧ください。

マネージド コードのコード分析では、マネージド アセンブリが分析され、.NET デザイン ガイドラインに規定されたプログラミングおよびデザインに関するルールの違反など、アセンブリに関する情報がレポートされます。

分析ツールは、分析中に実行するチェック項目を警告メッセージとして表示します。 警告メッセージは、プログラミングやデザイン上の問題を識別し、可能であれば問題の解決方法を提供します。

Note

レガシ分析 (静的コード分析) は、Visual Studio の .NET Core および .NET Standard プロジェクトではサポートされていません。 msbuild の一部として .NET Core または .NET Standard プロジェクトでコード分析を実行すると、"エラー: CA0055: <your.dll> のプラットフォームを識別できませんでした" のようなエラーが表示されます。 .NET Core または .NET Standard プロジェクトのコードを分析するには、代わりにコード アナライザーを使用します。

IDE (統合開発環境) の統合

プロジェクトでのコード分析は、手動で実行することも、自動的に実行することもできます。

プロジェクトをビルドするたびにコード分析を実行するには、プロジェクトの [コード分析] プロパティ ページでそのオプションを選択します。 詳細については、自動コード分析を有効または無効にする方法に関する記事をご覧ください。

プロジェクトでコード分析を手動で実行するには、メニュー バーで [分析]>[コード分析の実行]>[<プロジェクト> でコード分析を実行] の順に選択します。

規則セット

マネージド コード用のコード分析規則は、規則セットにグループ化されています。 Microsoft 標準ルール セットのいずれかを使用することも、特定のニーズを満たすカスタム ルール セットを作成することもできます。

警告を表示しない

警告が適用されないことを示すと役に立つことがよくあります。 これによって、開発者や、そのコードを後でレビューする担当者は、その警告が既に調査済みであり、抑制されるのかまたは無視されるのかがわかります。

警告のソース内抑制は、カスタム属性を使用して実装します。 警告を抑制するには、次の例のように、属性 SuppressMessage をソース コードに追加します。

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1039:ListsAreStrongTyped")]
Public class MyClass
{
   // code
}

詳細については、「警告を表示しない」を参照してください。

Note

プロジェクトを Visual Studio 2019 に移行すると、突然、コード分析の警告が多数表示される場合があります。 警告を修正する準備ができていない場合は、[分析]>[アクティブな懸案事項のビルドと抑制] を選択することで、すべての警告を抑制できます。

チェックイン ポリシーの一部としてのコード分析の実行

組織的な取り決めとして、チェックインされるすべてのコードが、特定のポリシーを満たしていることが必要な場合があります。 たとえば、次のようなポリシーが考えられます。

  • チェックインするコードにビルド エラーが存在しないこと。

  • 最新のビルドの一部としてコード分析が実行されていること。

これは、チェックイン ポリシーを指定することにより実現できます。 詳細については、プロジェクト チェックイン ポリシーによるコード品質の向上に関する記事をご覧ください。

チーム ビルドの統合

ビルド システムの統合機能を使用すると、分析ツールをビルド プロセスの一環として実行できます。 詳細については、 Azure Pipelines を参照してください。