2010-07-15 136 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