【问题标题】:Disable all stylecop warnings for a specific C# class禁用特定 C# 类的所有 stylecop 警告
【发布时间】:2013-02-08 09:35:52
【问题描述】:

我正在开发一个应用程序并开发几个用于演示目的的类。我知道这些类将来会被删除。

是否可以忽略这些类的所有 stylecop 警告,因为我不想花时间在这些警告上?

我搜索但发现我只能通过 stylecop 中的设置忽略(这也会影响其他类)或某些特定规则(我只想忽略所有警告)。

【问题讨论】:

  • stylecop 警告或错误?

标签: c# .net-4.5 stylecop


【解决方案1】:

您可以通过在顶部添加此标题来欺骗 StyleCop 根本不处理文件:

//------------------------------------------------------------------------------
// <auto-generated>
// Well, not really. This is just a trick to get StyleCop off my back.
// </auto-generated>
//------------------------------------------------------------------------------

【讨论】:

  • 我这样做了,但没有奏效。我仍然可以看到相同的警告。
  • 向自动生成的文件中添加任何内容是否存在固有问题?如果生成的代码被更新,这可以被替换
  • @Tyler:在标题中粘贴说文件是自动生成的实际上并没有做到这一点。
  • 哦,是的,我的错误。我正在为实际自动生成的文件寻找解决方案!
  • 这对于在测试代码时快速克服编译阶段非常棒。
【解决方案2】:

从 StyleCop 4.4.0 开始,还可以使用单个抑制属性来抑制规则命名空间中的所有规则。这通过用单个星号替换规则 CheckID 和规则名称来表示。下面的代码示例在内部类中抑制了 StyleCop 的所有默认文档规则。在这种情况下,StyleCop 仍然会标记一个违规,表明外部类缺少文档,但它会忽略内部类及其内容的所有文档规则。

public class OuterClass
{
    [SuppressMessage("StyleCop.CSharp.DocumentationRules", "*")]
    public class InnerClass
    {
        public void MyUndocumentedMethod
        {
        }
    }
}

http://stylecop.soyuz5.com/Suppressions.html

【讨论】:

    【解决方案3】:

    感谢 Bartłomiej Mucha 提供我刚刚使用的答案。正如我所发现的,“*”适用于特定规则,但您必须为每个类别添加抑制。这是完整的集合 - 如果将它们复制到类的顶部,您应该会发现所有 StyleCop 错误都被抑制:

    [SuppressMessage("StyleCop.CSharp.NamingRules", "*", Justification = "Reviewed. Suppression is OK here.")]
    [SuppressMessage("StyleCop.CSharp.LayoutRules", "*", Justification = "Reviewed. Suppression is OK here.")]
    [SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "*", Justification = "Reviewed. Suppression is OK here.")]
    [SuppressMessage("StyleCop.CSharp.OrderingRules", "*", Justification = "Reviewed. Suppression is OK here.")]
    [SuppressMessage("StyleCop.CSharp.ReadabilityRules", "*", Justification = "Reviewed. Suppression is OK here.")]
    [SuppressMessage("StyleCop.CSharp.SpacingRules", "*", Justification = "Reviewed. Suppression is OK here.")]
    [SuppressMessage("StyleCop.CSharp.DocumentationRules", "*", Justification = "Reviewed. Suppression is OK here.")]
    internal class MyClass 
    {
        // ...
    }
    

    【讨论】:

      【解决方案4】:

      如果您想防止 StyleCop 在文件上运行,您可以使用 http://stylecop.codeplex.com/wikipage?title=Using%20StyleCop%20on%20Legacy%20Projects&referringTitle=Documentation 中提到的 ExcludeFromStyleCop 属性在您的 .csproj 文件中将其标记为已排除。

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

        • 这只会抑制 SA1600。
        猜你喜欢
        • 1970-01-01
        • 2011-12-29
        • 1970-01-01
        • 1970-01-01
        • 2010-11-29
        • 2010-12-17
        • 1970-01-01
        • 2014-09-08
        • 1970-01-01
        相关资源
        最近更新 更多