如何让FxCop在整个类型中禁止警告?

11
如何为整个类型禁止 FxCop 警告?
namespace ConsoleApplication1
{     
    public static class Serializer<T>
    {
        public static string Serialize(T obj)
        {
            return string.Empty;
        }

        public static T Deserialize(string str)
        {
            return default(T);
        }
    }

我尝试过这个,但对我不起作用:

[assembly: SuppressMessage("Microsoft.Design",
    "CA1000:DoNotDeclareStaticMembersOnGenericTypes", Scope = "Type",
    Target = "ConsoleApplication1.Serializer'1")]
1个回答

11

很不幸,这样做是行不通的。 FxCop只处理与检测到的违规行为相同目标的抑制。如果它在您的Serialize方法上发现了一个违规行为,则只有声明在该方法本身上的SuppressMessage属性或其Target属性标识该方法的属性才能“隐藏”该违规行为。

如果要抑制Serializer<T>类中每个静态方法的CA1000违规行为,则需要为每个方法创建一个SuppressMessage属性。

@Matt Faus:那么Scope参数有什么意义呢?

Scope参数让FxCop知道Target参数表示的是什么类型的对象。例如,如果Target"A.B.C",那么它是指名为A.B.C的名称空间还是指名为C的位于名称空间A.B中的类?Scope应该被命名为TargetKind之类的名称,但遗憾的是,这并不会改变它实际表示的内容...

另请参见此答案


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