【问题标题】:Suppressing CA-rules in Stylecop在 Stylecop 中抑制 CA 规则
【发布时间】:2016-11-30 13:56:54
【问题描述】:

我正在整理一份 stylecop-warnings 列表,其中一些我只是想压制。但是,在使用help of StyleCop's own documentation 处理 SA 列表后,我发现 StyleCop 没有记录 CA 警告。我很难找到 CA 警告列表及其规则类别/规则长名称,我需要能够抑制它们(如 stated by StyleCop)..

具体来说,CA1822 是我现在想要找到的。一个“后备方法”,其执行写法是这样的

this.MyList = this.MethodReturnsAList() ?? this.BackUpMethod();

被标记为“从未使用过”。我不想使方法静态,所以我想我会抑制消息以清除我的日志。按照the MSDN-page的说法,应该不会有什么问题。

任何关于我在哪里可以找到 CA 规则描述的帮助将不胜感激,尽管目前我会选择让警告消失的替代方法..

【问题讨论】:

标签: c# stylecop


【解决方案1】:

CA 警告不是 Style Cop 警告。它们只不过是代码分析警告。您几乎可以在 MSDN 本身中找到它们的规则描述。对于这个特别的警告,请参考CA1822: Mark members as static

【讨论】:

  • 我找到的那个页面,所以假设我需要的规则类别和规则长名称(在主帖中引用)可以在这里找到,它们在哪里找到?
  • 我想我在您的代码中找到了导致此警告的根本原因。我怀疑 MethodReturnsTruOrFalse 方法返回一个布尔值。但是您已经用 ??运算符检查左侧操作数是否为空,如果为空,则返回右侧操作数。由于 bool 是不可为空的,因此编译器会说 ?? 右侧的方法运算符从未使用过。
  • 那是我的事,我本来应该写ReturnsAList(),但由于某种原因,我脑子里出现了一个布尔值。但是,它仍然返回一个空列表(所以不是 null),这实际上与您所说的相同。这样就解决了这个警告,但我仍然很好奇在哪里可以找到我需要的 MSDN 页面上的属性?
  • 您可以通过以下方式抑制它 [Scope:SuppressMessage("Rule Category", "Rule Id", Justification = "Justification", MessageId = "MessageId", Scope = "Scope", Target = "Target")] 为此,您只需要规则类别和规则 ID,您可以在我上面给出的页面中找到它们。为方便起见,规则类别:Microsoft.Performance Rule Id:CA1822
  • 我不想要全局抑制,因为在其他情况下警告是有效的并且需要解决。我只是想在这种特定情况下压制它..