我们在 C# 项目中使用 StyleCop。在某些情况下,我们希望避免这些规则。我知道您可以// <auto-generated />
在文件的开头添加以使 StyleCop 忽略它。但是,我不想忽略整个文件的规则——只有其中的一段代码。
我可以以某种方式禁用特定行的 StyleCop 吗?
您可以通过向代码块添加属性来抑制规则。这是下面链接的博客文章中的一个类的简单示例,但您可以单独对各个成员执行此操作:
[SuppressMessage("Microsoft.StyleCop.CSharp.DocumentationRules", "SA1600:ElementsMustBeDocumented")]
public class MyUndocumentedClass
{
public void MyUndocumentedMethod {}
}
在 MSDN 博客文章中有一个快速概述,对 MSDN 上的属性有更完整的描述。
我知道的一个老问题,但在寻找答案时,我发现在 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")]
这家伙似乎有一个很好的一般忽略黑客;他建议把它放在文件的顶部 - 测试并使用 R#
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// </auto-generated>
//------------------------------------------------------------------------------
例如,当您只是制作大量样板以遵守主要未实现的界面时,这很方便。
您可以将这段代码放在区域名称 Generated Code 之间,它将被省略。
使用以下 StyleCop 属性装饰您的类或方法:
[GeneratedCode("Tool Goes Here", "Message Goes Here")]