Exclure un espace de noms complet de l'analyse de code FxCop?
-
20-08-2019 - |
Question
Est-il possible d'exclure un espace de noms complet de toutes les analyses FxCop tout en analysant le reste de l'assembly à l'aide de la SuppressMessageAttribute
?
Dans mon cas actuel, j'ai beaucoup de classes générées par LINQ to SQL qui causent beaucoup de problèmes avec FxCop, et bien entendu, je ne modifierai pas toutes celles-ci pour qu'elles correspondent aux normes FxCop, car beaucoup de ces modifications seraient parti si je re-généré les classes.
Je sais que FxCop dispose d'une option de projet pour supprimer l'analyse sur le code généré, mais il ne semble pas reconnaître les classes d'entité et de contexte créées par LINQ 2 SQL en tant que code généré.
La solution
Si vous balisez vos classes avec l'attribut [GeneratedCode]
, vous pouvez utiliser l'indicateur / ignoregeneratedcode avec FxCop comme décrit dans cet article MSDN:
FAQ: Comment empêcher FxCop de déclencher des avertissements contre le code généré
Vous devrez peut-être ajouter un nouveau fichier de code et y implémenter de nouvelles classes partielles pour ajouter l'attribut aux classes:
[GeneratedCode]
public partial class MainDataContext { }
Assurez-vous simplement que vous ajoutez tout au bon espace de noms lorsque vous créez votre nouveau fichier.
Autres conseils
Ajouter un [GeneratedCode] attribute
aux cours.
MODIFIER : je voulais dire des classes partielles portant le même nom, comme expliqué par l'autre réponse.
Utilisez l'attribut de code généré, voici le article de blog de l'équipe d'analyse de code sur le sujet.
Ceci en haut de l'espace de noms devrait faire l'affaire:
[GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
<Assembly: SuppressMessage("Microsoft.Design", _
"CA1020:AvoidNamespacesWithFewTypes", _
Scope:="namespace", _
Target:="Missico.IO")>
Placez l'instruction dans GlobalSuppressions.vb
à la racine du projet.
Tout ce que j'ai est un exemple de VB.