19

Dans un projet sur lequel je travaille, FxCop me montre beaucoup d'erreurs (et je veux dire plus de 400) sur les méthodes InitializeComponent() générées par le concepteur Windows Forms. La plupart de ces erreurs sont juste l'assignation de la propriété Text des labels.Exclusion de la règle d'analyse de code dans la source

Je voudrais supprimer ces méthodes dans la source, j'ai donc copié le code de suppression généré par FxCop dans AssemblyInfo.cs, mais cela ne fonctionne pas.

C'est 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.

Répondre

18

Vous avez probablement le bon code, mais vous devez également ajouter CODE_ANALYSIS en tant que symbole précompilé 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.

+2

J'avais une solution avec plusieurs projets. Le CODE_ANALYSIS doit être ajouté pour chaque projet. – Diizzy

2

Les messages de suppression de niveau de module doivent être collés dans le même fichier que le code qui déclenche l'erreur FxCop avant la déclaration de l'espace de noms ou dans assemblyinfo.cs. De plus, CODE_ANALYSIS doit être défini comme un symbole de compilateur conditionnel (Projet> Propriétés> Construire). Une fois cela en place, faites une reconstruction complète du projet et la prochaine fois que vous exécuterez FxCop, l'erreur devrait être déplacée vers l'onglet "Exclue dans la source".

En outre, un petit conseil, mais si vous avez beaucoup d'exclusions FxCop, il peut être utile d'envelopper une zone autour d'eux afin que vous puissiez les mettre à l'écart.

4

Dans FxCop 1.36, il y a une option de projet dans l'onglet "Spelling & Analysis" qui supprimera l'analyse pour tout code généré. Si vous ne voulez pas désactiver l'analyse pour 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 Construire). Sans ce symbole défini, les attributs SupressMessage seront supprimés du code compilé afin que FxCop ne les voit pas.

L'autre problème avec votre attribut SuppressMessage est que vous liez une "cible" d'un nom de méthode spécifique (dans ce cas, WindowsClient.MainForm.InitializeComponent(): System.Void) et une liste spécifique "Scope". Vous pouvez essayer d'enlever ceux-ci; sinon, vous devez ajouter ce message SuppressMessage à chaque instance de la méthode.

Vous devriez également mettre à niveau vers le RTM version de FxCop 1.36, la version bêta ne détectera pas automatiquement la nouvelle version.

Questions connexes