2010-07-15 4 views
8

Come posso eliminare gli avvisi FxCop per un intero tipo?Come posso ottenere FxCop per sopprimere gli avvertimenti per un intero tipo?

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); 
     } 
    } 

provato a farlo, ma non funziona per me:

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

risposta

8

Purtroppo, questo non funzionerà. FxCop elabora solo le soppressioni dichiarate contro la stessa destinazione di una violazione rilevata. Se trova una violazione sul metodo Serialize, gli unici attributi SuppressMessage che "nascondono" tale violazione sono dichiarati sul metodo stesso o su uno la cui proprietà Target identifica il metodo.

Se si desidera sopprimere una violazione CA1000 per ciascuno dei metodi statici nella classe Serializer, è necessario eseguire questa operazione creando un attributo SuppressMessage per ciascuno di questi metodi.

+2

Qual è il punto dell'argomento Scope, quindi? :( –

+5

Permette a FxCop di sapere che tipo di argomento rappresenta l'argomento Target. Ad esempio, se il Target è "ABC", si riferisce a uno spazio dei nomi chiamato ABC o una classe denominata C nel namespace AB? essere chiamato qualcosa come "TargetKind", ma che, purtroppo, non cambia ciò che rappresenta in realtà ... –