‬使用 .NET Compiler Platform (Roslyn)分析器进行代码分析

.NET compiler platform (Roslyn) 分析器检查 C# 或 Visual Basic 代码的样式、质量、可维护性、设计及其他问题。 此检查或分析是在设计期间在所有打开的文件中发生的。

分析器分为以下几组:

分析器的严重性级别

每个 Roslyn 分析器规则或诊断都有默认的严重性和抑制状态,可在项目中进行自定义。

严重性级别包括:错误、警告、建议、无提示、无和默认。 有关详细信息和行为,请参阅配置严重性级别

规则冲突

如果分析器发现任何违反分析器规则的情况,则会在“错误列表”窗口和代码编辑器中报告这些违规情况。

以下屏幕截图显示了“错误列表”窗口中报告的违反规则的情况。 错误列表中报告的分析器违规情况与规则的严重性级别设置相匹配:

显示“错误列表”窗口中的分析器违规情况的屏幕截图。

违反分析器规则的情况也会在代码编辑器中以波浪线的形式显示在违规代码下。 例如,以下屏幕截图显示了三个违规情况:一个错误(红色波浪线)、一个警告(绿色波浪线)和一个建议(三个灰点):

显示代码编辑器中的错误、警告和建议标记的屏幕截图。

代码修补程序

许多诊断都有一个或多个相关的代码修复,可以应用它们来纠正违反规则的情况。 代码修复以及其他类型的快速操作显示在灯泡图标菜单中。 有关这些代码修复的详细信息,请参阅常见快速操作

显示代码编辑器中的分析器违规情况和快速操作代码修复的屏幕截图。

配置分析器严重性级别

可以在 EditorConfig 文件中或从灯泡菜单中配置分析器规则的严重性。

也可以配置分析器在生成时和在键入时检查代码。 你可配置实时代码分析的范围,以仅对当前文档执行、对所有打开的文档执行或对整个解决方案执行。 有关详细信息,请参阅配置 .NET 实时代码分析

提示

仅当分析器作为 NuGet 包安装时,才会显示来自代码分析器的生成时错误和警告。 内置分析器(例如 IDE0067 和 IDE0068)不会在生成期间运行。

安装外部代码分析器

Visual Studio 包含一组始终处于活动状态的核心 Roslyn 分析器。 如果需要更多代码分析器,可以通过 NuGet 包为每个项目安装外部分析器。 有些分析器还可用作 Visual Studio .vsix 扩展,这种情况下,它们适用于在 Visual Studio 中打开的任何解决方案。 有关安装这两种不同类型的分析器的信息,请参阅安装代码分析器

范围

如果将分析器安装为 NuGet 包(首选方法),则它仅适用于安装了 NuGet 软件包的项目。 否则,如果将分析器安装为 Visual Studio 扩展,它将在解决方案级别应用于 Visual Studio 的所有实例。 在团队环境中,作为 NuGet 包安装的分析器适用于处理该项目的所有开发人员。

注意

第一方分析器随附在 .NET SDK 中。 最好从 .NET SDK 启用这些分析器,而不是将它们安装为 Microsoft.CodeAnalysis.NetAnalyzersNuGet 包。 从 .NET SDK 启用分析器可以确保在更新 SDK 后,立即自动获取分析器缺陷修复和新分析器。 有关分析器的详细信息,请参阅启用或安装第一方 .NET 分析器

生成错误

要在生成时使用命令行执行或持续集成 (CI) 生成来强制执行规则,可以选择以下选项之一:

  • 创建一个 .NET 5.0 或更高版本的项目,该项目默认启用代码分析。 要在面向 .NET 早期版本的项目上启用代码分析,请将 EnableNETAnalyzers 属性设置为 true

  • 将分析器安装为 NuGet 包。 如果将分析器安装为 Visual Studio 扩展,则分析器警告和错误不会显示在生成报告中。

以下屏幕截图显示了生成包含分析器规则冲突的项目时的命令行生成输出:

显示开发人员命令提示符中存在违反规则的情况的 MSBuild 输出的屏幕截图。

规则严重性

如果要配置分析器规则严重性,必须将分析器安装为 NuGet 包。 无法从作为 Visual Studio 扩展安装的分析器配置规则严重性。

后续步骤