Question

c # /. Net / FxCop!

... au sein d'une classe, je veux FxCop de se taire se plaindre de

Warning CA1062 : Microsoft.Design : 
In externally visible method 'xyz', validate parameter 'a' before using it. 

En fait, cette règle suggère que je mets un if (a == null) throw new ArgumentNullException("a"); au début de presque toutes les méthodes dans mon code. Cette suce et modifie la logique de gestion des exceptions.

Alors, je mets cela quelque part dans mon corps de classe:

[SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods",
     Scope = "Type", 
     MessageId = "0", 
     Justification = "We love danger... so far.")]

En tout cas, cela ne supprime pas même un seul message - je reçois encore tous ces avertissements. Il ne supprime que l'avertissement si elle se trouve juste au-dessus l'une des définitions de méthode faillibles (à savoir qu'il ne supresses un seul avertissement, pas tous de ce type). La chose étrange est que la même syntaxe fonctionne pour d'autres problèmes qui se produisent plusieurs fois dans ma classe.

Je ne sais pas ce que je fais mal, et franchement je ne comprends pas vraiment comment utiliser les paramètres d'attribut .. http://msdn.microsoft.com/de-de/library/ms244717.aspx ne va pas trop dans les détails. : T ... de toute façon, toutes les idées ce qui ne va pas

Était-ce utile?

La solution

Voulez-vous supprimer le message pour toutes les classes ou seulement une seule classe? Si l'ancien, vous pouvez désactiver la règle. (Le mécanisme exact de le faire dépend de la façon dont vous utilisez FxCop, donc s'il vous plaît fournir des détails si vous avez besoin d'aide.)

Dans ce dernier cas, vous allez avoir besoin d'ajouter un attribut SuppressMessage pour au moins chaque méthode dans laquelle est détecté le problème. La raison est que FxCop ne recherche que sur la cible répressions d'une violation. Une suppression ajouté à un élément « parent » (par exemple .: la classe à laquelle appartient un procédé) ne soit jamais examiné par FxCop lors d'une tentative pour déterminer si une violation a été supprimée.

Vous avez une certaine flexibilité par rapport à l'endroit où vous placez la suppression dans votre code si vous utilisez l'attribut cible, mais cela ne change pas la nécessité d'un attribut de suppression par cible de violation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top