获取FxCop来抑制整个类型的警告?

时间:2010-07-15 08:40:36

标签: c# .net code-analysis fxcop suppressmessage

如何针对整个类型抑制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 个答案:

答案 0 :(得分:10)

不幸的是,这不起作用。 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,但不幸的是,它不会改变它实际代表的内容......

另见this answer