2010-07-15 2 views
8

comment puis-je supprimer les avertissements FxCop pour un type entier?Comment puis-je demander à FxCop de supprimer les avertissements pour un type entier?

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

essayé, mais il ne fonctionne pas pour moi:

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

Répondre

8

Malheureusement, cela ne fonctionnera pas. FxCop ne traite que les suppressions déclarées contre la même cible en tant que violation détectée. S'il trouve une violation sur votre méthode Serialize, les seuls attributs SuppressMessage qui «masqueront» cette violation sont soit déclarés sur la méthode elle-même, soit comme ceux dont la propriété Target identifie la méthode.

Si vous souhaitez supprimer une violation CA1000 pour chacune de vos méthodes statiques dans la classe Serializer, vous devez le faire en créant un attribut SuppressMessage pour chacune de ces méthodes.

+2

Quel est le point de l'argument Scope alors? :( –

+5

Il permet à FxCop de savoir quel genre de chose représente l'argument Target.Par exemple, si la cible est "ABC", cela fait-il référence à un espace de noms nommé ABC ou une classe nommée C dans l'espace de noms AB? être nommé quelque chose comme "TargetKind", mais cela, malheureusement, ne change pas ce qu'il représente réellement ... –

Questions connexes