【问题标题】: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 不支持全局抑制或文件级抑制的概念。抑制必须放在代码元素上。
一种选择是简单地关闭您不感兴趣的规则。这是全局抑制的首选方法。