【问题标题】:Suppressing the StyleCop Warnings at the global level在全局级别抑制 StyleCop 警告
【发布时间】:2011-11-07 00:19:18
【问题描述】:

如何在解决方案中全局抑制 StyleCop 警告?

该解决方案是使用 Jenkins(持续构建和集成工具)持续构建的,它应用了所有 StyleCop 规则。该解决方案使用 TAB 字符而不是 4 个空格,因为它是我的开发团队采用的标准。因此,StlyeCop 会抛出几个 SA1027 警告。

如何从 Jenkins 中删除 SA1027 警告?这也会有所帮助。

在每个 C# 文件上提供 SuppressMessage 看起来不太好。这就是我寻找全局抑制方法的原因。

【问题讨论】:

    标签: c# msbuild jenkins stylecop


    【解决方案1】:

    找到您的 .ruleset 文件。 (在解决方案项下或任何位置)将Action 更改为None

    <Rule Id="SA1027" Action="None" />
    

    【讨论】:

      【解决方案2】:

      VS2015 + StyleCop 分析器:

      StyleCop.Settings 不再被使用,但您仍然可以按照 JaredPar 所说的操作并在全局范围内关闭特定警告。为此,请修改您当前的规则集(在项目的 Properties GUI > Code Analysis > Open 下),并将您的更改保存为新规则集。

      【讨论】:

        【解决方案3】:

        文件Settings.StyleCop 应包含:

        <StyleCopSettings Version="105">
          <Analyzers>
            <Analyzer AnalyzerId="StyleCop.CSharp.SpacingRules">
              <Rules>
                <Rule Name="TabsMustNotBeUsed">
                  <RuleSettings>
                    <BooleanProperty Name="Enabled">False</BooleanProperty>
                  </RuleSettings>
                </Rule>
              </Rules>
              <AnalyzerSettings />
            </Analyzer>
          </Analyzers>
        </StyleCopSettings>
        

        【讨论】:

          【解决方案4】:

          似乎您可能需要更改 StyleCop 配置(设置)而不是全局禁止某些规则。 StyleCop 设置是“通过文件系统继承的”,因此您可以在解决方案文件夹级别创建适当的设置文件。

          关于您特定的“制表符与空格”主题,您不仅可以关闭需要空格的 StyleCop 规则,还可以使用一些包含需要制表符的规则的 StyleCop 插件(如 StyleCop+)。

          【讨论】:

            【解决方案5】:

            StyleCop 不支持全局禁止规则的概念。它要求将SuppressMessage 属性放在给定的代码元素上。

            来自源分析博客 (Source)

            StyleCop 不支持全局抑制或文件级抑制的概念。抑制必须放在代码元素上。

            一种选择是简单地关闭您不感兴趣的规则。这是全局抑制的首选方法。

            【讨论】: