使用规则集对代码分析规则进行分组

在 Visual Studio 中配置代码分析时,可以从内置“规则集”列表中进行选择。 规则集是一组代码分析规则,用于标识该项目的目标问题和特定条件。 例如,可以应用旨在扫描公开可用 API 的代码的规则集。 也可应用包含所有可用规则的规则集。

通过添加或删除规则,或者通过更改规则严重性以使其在“错误列表”中显示为警告或错误,来自定义规则集。 自定义的规则集可以满足特定开发环境的需求。 当自定义规则集时,规则集编辑器将提供搜索和过筛选工具来帮助你完成此过程。

规则集可用于托管代码分析托管代码的传统分析C++ 代码分析

注意

从 Visual Studio 2019 版本 16.3 开始,可使用 EditorConfig 文件为 .NET 源代码分析配置规则,但不能为传统分析配置规则。 有关详细信息,请参阅常见问题解答中的 EditorConfig 与规则集部分。

规则集格式

规则集在 .ruleset 文件中以 XML 格式指定。 规则(由 ID 和操作组成)按分析器 ID 和文件中的命名空间分组。

.ruleset 文件中的内容类似于以下 XML:

<RuleSet Name="Rules for Hello World project" Description="These rules focus on critical issues for the Hello World app." ToolsVersion="10.0">
  <Localization ResourceAssembly="Microsoft.VisualStudio.CodeAnalysis.RuleSets.Strings.dll" ResourceBaseName="Microsoft.VisualStudio.CodeAnalysis.RuleSets.Strings.Localized">
    <Name Resource="HelloWorldRules_Name" />
    <Description Resource="HelloWorldRules_Description" />
  </Localization>
  <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
    <Rule Id="CA1001" Action="Warning" />
    <Rule Id="CA1009" Action="Warning" />
    <Rule Id="CA1016" Action="Warning" />
    <Rule Id="CA1033" Action="Warning" />
  </Rules>
  <Rules AnalyzerId="Microsoft.CodeQuality.Analyzers" RuleNamespace="Microsoft.CodeQuality.Analyzers">
    <Rule Id="CA1802" Action="Error" />
    <Rule Id="CA1814" Action="Info" />
    <Rule Id="CA1823" Action="None" />
    <Rule Id="CA2217" Action="Warning" />
  </Rules>
</RuleSet>

提示

在图形化的规则集编辑器中编辑规则集比手动编辑更容易。

为项目指定规则集

项目的规则集由 Visual Studio 项目文件中的 CodeAnalysisRuleSet 属性指定。 例如:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
  ...
  <CodeAnalysisRuleSet>HelloWorld.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>