针对特定的C#类禁用所有StyleCop警告

9

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

是否有可能忽略那些类的所有StyleCop警告,因为我不想在这些警告上浪费时间?

我搜索过,但发现只能通过StyleCop设置来忽略某些特定规则的警告(这也会影响到其他类),而无法忽略所有警告。


StyleCop 警告或错误? - daryal
5个回答

25

如果在文件顶部添加此标题,您可以欺骗StyleCop完全不处理该文件:

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

我做了这件事,但是没有起作用。我仍然可以看到相同的警告。 - D J
虽然在自动生成的文件中添加任何内容都存在固有问题,但这可能会被替换,如果生成的代码得到更新。 - DevDave
2
@Tyler:粘贴一个标题,说这个文件是自动生成的,并不能使它真正成为自动生成的文件。 - Jon
1
哦,是我的错误。我正在寻找一个针对实际自动生成的文件的解决方案! - DevDave
1
这对于在测试代码时快速通过编译阶段非常棒。 - KFL

15

从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


13

感谢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 
{
    // ...
}

1

0

您可以通过将属性添加到代码块来禁用规则。下面是一个简单的示例,使用链接下方的博客文章中的类,但您也可以对各个成员进行操作:

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

2
这将仅禁止 SA1600。 - D J

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接