2010-07-15 158 views
8

我怎样才能完全抑制FxCop警告?我怎样才能让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")] 

回答

8

不幸的是,这是不行的。 FxCop仅处理针对相同目标声明的抑制作为检测到的违规。如果在您的Serialize方法中发现违规,则将“隐藏”该违规的唯一SuppressMessage属性或者是在方法本身上声明的,或者是其Target属性标识该方法的属性。

如果您想要为Serializer类中的每个静态方法抑制CA1000冲突,则需要通过为每个方法创建SuppressMessage属性来执行此操作。

+2

然后,范围参数的要点是什么? :( – 2012-01-11 23:59:25

+5

它让FxCop知道Target参数代表什么类型的东西,例如,如果目标是“ABC”,那么它是指在名称空间AB中名为ABC的名称空间或名为C的类吗?被命名为“TargetKind”,但不幸的是,它不会改变它实际表示的内容...... – 2012-01-12 17:31:48