.NET 编译器平台 (Roslyn) 分析器检查 C# 或 Visual Basic 代码的样式、质量、可维护性、设计和其他问题。 此检查或分析发生在所有打开的文件的设计期间。
分析器分为以下组:
-
这些分析器内置于 Visual Studio 中。 分析器的诊断 ID 或代码格式为 IDExxxx,例如,IDE0001。 可以在 文本编辑器选项页 或 EditorConfig 文件中配置首选项。 从 .NET 5.0 开始,代码样式分析器包含在 .NET SDK 中,可以作为构建警告或错误严格执行。 有关详细信息,请参阅 .NET 源代码分析概述。
-
这些分析器包含在 .NET 5.0 及更高版本的 SDK 中,并默认启用。 分析器的诊断 ID 或代码格式为 CAxxxx,例如 CA1822。 有关详细信息,请参阅 .NET 代码质量分析概述。
外部分析器
外部分析器的示例包括 StyleCop、 Roslynator、 xUnit 分析器和Sonar 分析器。 可以将这些分析器安装为 NuGet 包或 Visual Studio 扩展。
分析器的严重性级别
每个 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.NetAnalyzers
NuGet 包。 通过 .NET SDK 启用分析器可确保您在更新 SDK 时自动获得错误修复和新分析器。 有关分析器的详细信息,请参阅 “启用或安装第一方 .NET 分析器”。
生成错误
若要在生成时强制实施规则,请使用命令行或持续集成(CI)生成,请选择以下选项之一:
创建一个 .NET 5.0 或更高版本的项目,该项目默认启用代码分析。 若要对面向早期 .NET 版本的项目启用代码分析,请将 EnableNETAnalyzers 属性设置为
true
。将分析器安装为 NuGet 包。 如果将分析器安装为 Visual Studio 扩展,分析器警告和错误不会显示在生成报表中。
以下屏幕截图显示了生成包含分析器规则冲突的项目的命令行生成输出:
规则严重性
如果要配置 分析器规则严重性,则必须将分析器安装为 NuGet 包。 您无法配置从作为 Visual Studio 扩展安装的分析器中设置的规则严重性。