Visual Studio でのコード分析に関する FAQ

このページには、Visual Studio での .NET Compiler Platform ベースのコード分析についてよく寄せられる質問への回答が記載されています。

コード分析と EditorConfig の比較

コード スタイルをチェックするには、コード分析と EditorConfig のどちらを使用するべきでしょうか?

コード分析と EditorConfig ファイルは連携して機能します。 EditorConfig ファイルまたはテキスト エディターの [オプション] ページでコード スタイルを定義すると、実際には、Visual Studio に組み込まれているコード アナライザーが構成されます。 EditorConfig ファイルを使用すると、アナライザー ルールを有効または無効にでき、NuGet アナライザー パッケージを構成することもできます。

EditorConfig とルール セットの比較

ルール セットと EditorConfig ファイルのどちらを使用してアナライザーを構成するべきでしょうか?

ルール セットと EditorConfig ファイルは共存させることができ、どちらもアナライザーの構成に使用できます。 EditorConfig ファイルとルール セットのどちらを使用しても、ルールを有効または無効にしたりその重大度を設定したりできます。

ただし、EditorConfig ファイルには、規則を構成する追加の方法も用意されています。

ルール セットと EditorConfig ファイルに加えて、C# および VB コンパイラの追加ファイルとしてマークされたテキスト ファイルを使用して構成されるアナライザーもあります。

注意

  • EditorConfig ファイルを使用したルールの有効化とその重大度の設定は、Visual Studio 2019 バージョン 16.3 以降でのみ可能です。
  • EditorConfig ファイルを使用してレガシ分析を構成することはできませんが、ルール セットでは可能です。

CI ビルドでのコード分析

.NET Compiler Platform ベースのコード分析は継続的インテグレーション (CI) ビルドで機能しますか?

はい。 NuGet パッケージからインストールされたアナライザーの場合、そのルールはビルド時に適用されます。これには CI ビルド時も含まれます。 CI ビルドで使用されるアナライザーでは、ルール セットと EditorConfig ファイルの両方からのルール構成が考慮されます。 現在、Visual Studio に組み込まれているコード アナライザーは NuGet パッケージとして入手できないため、これらのルールは CI ビルドでは適用できません。

IDE アナライザーと StyleCop の比較

Visual Studio IDE コード アナライザーと StyleCop アナライザーの違いは何ですか?

Visual Studio IDE には、コードのスタイルと品質の両方の問題を探す組み込みアナライザーが含まれています。 これらのルールにより、導入された新しい言語機能を使用し、コードの保守容易性を向上させることができます。 IDE アナライザーは、Visual Studio のリリースごとに継続的に更新されます。

StyleCop アナライザーは、NuGet パッケージとしてインストールされるサードパーティのアナライザーであり、コード内のスタイルの一貫性をチェックします。 一般に、StyleCop のルールを使用すると、推奨されるスタイルが示されるのではなく、コードベースの個人用設定を構成できます。

コード アナライザーとレガシ分析の比較

レガシ分析と .NET Compiler Platform ベースのコード分析の違いは何ですか?

.NET Compiler Platform ベースのコード分析では、ソース コードがリアルタイムおよびコンパイル時に分析されます。一方、レガシ分析では、ビルドの完了後にバイナリ ファイルが分析されます。 詳細については、.NET Compiler Platform ベースの分析とレガシ分析の比較に関するセクションを参照してください。

FxCop アナライザーと .NET アナライザーの比較

FxCop アナライザーと .NET アナライザーの違いは何ですか?

FxCop アナライザーと .NET アナライザーはどちらも、FxCop CA 規則の .NET Compiler Platform ("Roslyn") アナライザーの実装を参照します。 Visual Studio 2019 16.8 および .NET 5.0 より前では、これらのアナライザーは Microsoft.CodeAnalysis.FxCopAnalyzersNuGet パッケージとして出荷されていました。 Visual Studio 2019 16.8 および .NET 5.0 以降では、これらのアナライザーは .NET SDK に含まれています。 また、これらは Microsoft.CodeAnalysis.NetAnalyzersNuGet パッケージとして利用することもできます。 FxCop アナライザーから .NET アナライザーへの移行を検討してください。

警告をエラーとして扱う

プロジェクトでは、警告をエラーとして扱うビルド オプションが使用されています。 レガシ分析からソース コード分析への移行後、コード分析のすべての警告がエラーとして表示されるようになりました。 これを防ぐにはどうすればよいですか?

コード分析の警告がエラーとして扱われないようにするには、こちらの手順に従ってください。

  1. 次の内容の .props ファイルを作成します。

    <Project>
       <PropertyGroup>
          <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
       </PropertyGroup>
    </Project>
    
  2. .csproj または .vbproj プロジェクト ファイルに行を追加して、前の手順で作成した .props ファイルをインポートします。 この行は、アナライザーの .props ファイルをインポートする行の前に配置する必要があります。 たとえば、.props ファイルの名前が codeanalysis.props の場合、次のようになります。

    ...
    <Import Project="..\..\codeanalysis.props" Condition="Exists('..\..\codeanalysis.props')" />
    <Import Project="..\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props" Condition="Exists('..\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props')" />
    ...
    

コード分析ソリューションのプロパティ ページ

ソリューションのコード分析のプロパティ ページはどこにありますか?

ソリューション レベルのコード分析のプロパティ ページは削除され、より信頼性の高い共有プロパティ グループが採用されました。 プロジェクト レベルでコード分析を管理する場合は、コード分析のプロパティ ページを引き続き使用できます。 (マネージド プロジェクトの場合は、ルール構成のために、ルール セットから EditorConfig に移行することもお勧めします)。ソリューションまたはリポジトリ内の複数またはすべてのプロジェクトの間でルール セットを共有する場合は、共有の props または targets ファイル、あるいは Directory.props/Directory.targets ファイルで、CodeAnalysisRuleSet プロパティを使ってプロパティ グループを定義することをお勧めします。 すべてのプロジェクトでインポートされる、このような共通の props または targets がない場合は、最上位のソリューション ディレクトリにある Directory.props または Directory.targets ファイルにこのようなプロパティ グループを追加することを検討してください。これは、ディレクトリまたはそのサブディレクトリ内に定義されているすべてのプロジェクト ファイルに自動的にインポートされます。