禁用特定行的StyleCop

时间:2009-11-18 10:09:13

标签: .net stylecop

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

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

5 个答案:

答案 0 :(得分:36)

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

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

MSDN博客帖子中有quick overview,MSDN上有fuller description of the attributes

答案 1 :(得分:12)

我知道一个老问题,但在寻找答案时,我发现在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")]
  • 注意:我可能缺少一两个规则类别

答案 2 :(得分:7)

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

//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// </auto-generated>
//------------------------------------------------------------------------------

当你只是制作一大堆样板来坚持主要未实现的界面时,很方便。

答案 3 :(得分:0)

您可以将这段代码放在区域名称Generated Code之间,并且它将被省略。

答案 4 :(得分:0)

使用以下StyleCop属性装饰您的类或方法:

[GeneratedCode("Tool Goes Here", "Message Goes Here")]