Question

Dans un projet sur lequel je travaille, FxCop me montre beaucoup (et je veux dire plus de 400) d'erreurs sur les méthodes InitializeComponent() générées par le concepteur Windows Forms.La plupart de ces erreurs sont simplement liées à l'affectation de la propriété Text des étiquettes.

J'aimerais supprimer ces méthodes dans les sources, j'ai donc copié le code de suppression généré par FxCop dans AssemblyInfo.cs, mais cela ne fonctionne pas.

Il s'agit de l'attribut que FxCop a copié dans le presse-papiers.

[module: SuppressMessage("Microsoft.Globalization",
    "CA1303:DoNotPassLiteralsAsLocalizedParameters",
    Scope = "member",
    Target = "WindowsClient.MainForm.InitializeComponent():System.Void",
    MessageId = "System.Windows.Forms.Control.set_Text(System.String)")]

Quelqu'un connaît l'attribut correct pour supprimer ces messages ?

PS :J'utilise Visual Studio 2005, C#, FxCop 1.36 bêta.

Était-ce utile?

La solution

Vous avez probablement le bon code, mais vous devez également ajouter CODE_ANALYSIS en tant que symbole défini par le précompilateur dans les propriétés du projet.Je pense que ces attributs SuppressMessage ne sont laissés dans les binaires compilés que si CODE_ANALYSIS est défini.

Autres conseils

Dans FxCop 1.36, il existe en fait une option de projet dans l'onglet "Orthographe et analyse" qui supprimera l'analyse de tout code généré.

Si vous ne souhaitez pas désactiver l'analyse de tout le code généré, vous devez vous assurer d'ajouter un symbole CODE_ANALYSIS à la liste des symboles de compilation conditionnelle (propriétés du projet, onglet Build).Sans ce symbole défini, les attributs SupressMessage seront supprimés du code compilé afin que FxCop ne les voie pas.

L'autre problème avec votre attribut SuppressMessage est que vous répertoriez une « cible » d'un nom de méthode spécifique (dans ce cas WindowsClient.MainForm.InitializeComponent():System.Void) et répertoriez une « portée » spécifique.Vous voudrez peut-être essayer de les supprimer ;sinon, vous devez ajouter ce SuppressMessage à chaque instance de la méthode.

Vous devriez également passer au Version RTM de FxCop 1.36, la version bêta ne détectera pas automatiquement la version la plus récente.

Les messages de suppression au niveau du module doivent être collés dans le même fichier que le code qui génère l'erreur FxCop avant la déclaration de l'espace de noms ou dans assemblyinfo.cs.De plus, vous devrez définir CODE_ANALYSIS en tant que symboles conditionnels du compilateur (Projet > Propriétés > Construire).Une fois que cela est en place, effectuez une reconstruction complète du projet et la prochaine fois que vous exécuterez FxCop, l'erreur devra être déplacée vers l'onglet "Exclus dans la source".

Aussi, un petit conseil, mais si vous avez affaire à de nombreuses exclusions FxCop, il peut être utile d'envelopper une région autour d'elles afin de pouvoir les éliminer.

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