禁用特定行的StyleCop

sti*_*k81 36 .net stylecop

我们在C#项目中使用StyleCop.在某些情况下,我们想要避免这些规则.我知道你可以// <auto-generated />在文件的开头添加,以使StyleCop忽略它.但是,我不想忽略整个文件的规则 - 只有一个代码块.

我可以以某种方式禁用特定行的StyleCop吗?

Fin*_*nNk 36

您可以通过向代码块添加属性来禁止规则.这是一个关于下面链接的博客文章中的类的简单示例,但您可以单独在各个成员上执行此操作:

[SuppressMessage("Microsoft.StyleCop.CSharp.DocumentationRules", "SA1600:ElementsMustBeDocumented")]
public class MyUndocumentedClass
{
    public void MyUndocumentedMethod {}
} 
Run Code Online (Sandbox Code Playgroud)

在MSDN博客文章中有一个快速概述,以及对MSDN上属性更全面的描述.

  • 请注意,您需要该属性的Justification =""参数 - 或者您将获得StyleCop警告SA1404:"代码分析抑制必须包含描述抑制原因的非空对齐." (5认同)
  • 让StyleCop忽略"这些行"将行包裹在一个区域中,并使开放区域包含单词"generated code"(如"这不是生成的代码,而是StyleCop应忽略的代码"). (3认同)
  • AFAIK是不可能的 - 抑制消息的能力本身就是一个相当新的补充. (2认同)

Ada*_*ler 13

我知道一个老问题,但在寻找答案时,我发现在stylecop 4.4中你现在可以把这样的东西 - 或其中一条线放在一个方法上:

[SuppressMessage("Microsoft.StyleCop.CSharp.DocumentationRules", "*", Justification = "Risky to change manually")]
[SuppressMessage("Microsoft.StyleCop.CSharp.SpacingRules", "*", Justification = "Risky to change manually")]
[SuppressMessage("Microsoft.StyleCop.CSharp.MaintainabilityRules", "*", Justification = "Risky to change manually")]
[SuppressMessage("Microsoft.StyleCop.CSharp.LayoutRules", "*", Justification = "Risky to change manually")]
[SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", "*", Justification = "Risky to change manually")]
[SuppressMessage("Microsoft.StyleCop.CSharp.ReadabilityRules??", "*", Justification = "Risky to change manually")]
[SuppressMessage("Microsoft.StyleCop.CSharp.OrderingRules", "*", Justification = "Risky to change manually")]
Run Code Online (Sandbox Code Playgroud)
  • 注意:我可能缺少一个或两个规则类别


bri*_*ler 7

家伙似乎有一个很好的普遍忽视黑客; 他建议把它放在文件的顶部 - 测试并使用R#

//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// </auto-generated>
//------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

例如,当您只是生成一大堆样板以便坚持主要未实现的接口时,就很方便了.

  • 如果您的代码不是自动生成的,则不应添加此标头。 (2认同)