Share via


使用規則集將程式碼分析規則分組

當您在 Visual Studio 中設定程式碼分析時,可以從內建規則集清單中選擇。 規則集是一組程式碼分析規則,用於識別該專案的目標問題和特定條件。 例如,您可以套用旨在掃描程式碼是否有公開可用 API 的規則集。 您也可以套用包含所有可用規則的規則集。

您可以自訂規則集,無論是新增或刪除規則,或是變更規則嚴重性以在錯誤清單中顯示為警告或錯誤。 自訂規則集可以滿足特定開發環境的需求。 當您自訂規則集時,規則集編輯器會提供搜尋和篩選工具,協助您完成此程序。

規則集可用於受控程式碼分析受控程式碼的舊版分析,以及 C++ 程式碼分析

注意

從 Visual Studio 2019 16.3 版開始,您可以使用 EditorConfig 檔案設定 .NET 原始程式碼分析的規則,但不能設定舊版分析的規則。 如需詳細資訊,請參閱常見問題中的 EditorConfig 與規則集一節。

規則集格式

規則集在 .ruleset 檔案中指定為 XML 格式。 規則由識別碼和動作所組成,會依檔案中的分析器識別碼和命名空間分組。

.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>