Question

Quelles sont certaines des stratégies utilisées lors de la mise en œuvre de FxCop/analyse statique sur des bases de code existantes avec des violations existantes ?Comment réduire le plus efficacement possible les violations de l’analyse statique ?

Était-ce utile?

La solution

Faites un usage libéral de l'attribut [SuppressMessage] pour commencer.Au moins au début.Une fois que vous avez obtenu le nombre à 0 via l'attribut, vous définissez ensuite une règle selon laquelle les nouveaux enregistrements ne peuvent pas introduire de violations FxCop.

Visual Studio 2008 dispose d'une fonctionnalité d'analyse de code intéressante qui vous permet de garantir que l'analyse de code s'exécute sur chaque build et que vous pouvez traiter les avertissements comme des erreurs.Cela pourrait ralentir un peu les choses, je recommande donc de configurer un serveur d'intégration continue (comme CruiseControl.NET) et de lui faire exécuter une analyse de code à chaque enregistrement.

Une fois que vous l'avez sous contrôle et que vous n'introduisez pas de nouvelles violations à chaque enregistrement, commencez à vous attaquer à des classes entières de violations FxCop à la fois dans le but de supprimer les SuppressMessageAttributes que vous avez utilisés.

La façon de savoir lesquels vous souhaitez réellement conserver est de toujours ajouter une valeur de justification à ceux que vous souhaitez réellement supprimer.

Autres conseils

Réécrivez votre code dans un style passagère !

Sérieusement, une ancienne base de code contiendra des centaines d'erreurs - mais c'est pourquoi nous avons des programmeurs novices/stagiaires.La correction des violations FxCop est un excellent moyen d'avoir un aperçu de la base de code et également d'apprendre à écrire du code .NET conforme.

Alors mordez la balle, buvez beaucoup de caféine et surmontez-le en quelques jours !

NDépend ressemble à il pourrait faire ce que vous recherchez, mais je ne suis pas sûr qu'il puisse être intégré dans une version automatisée de CruiseControl.Net et échouer si le code ne répond pas aux exigences (ce que j'aimerais faire). arriver).

D'autres idées ?

Une alternative à FxCop serait d'utiliser l'outil NDépend.Cet outil permet d'écrire Règles de code sur les requêtes C# LINQ (ce qu'on appelle CQLinq). Clause de non-responsabilité:Je suis l'un des développeurs de l'outil

Plus que 200 règles de code sont proposés par défaut.Personnaliser les règles existantes ou créer vos propres règles est simple grâce à bien connu Syntaxe C# LINQ.

Pour maintenir le nombre de faux positifs à un faible niveau, CQLinq offre des capacités uniques permettant de définir quel est l'ensemble JusteMonCode via des requêtes de code spéciales préfixées par pas mon code.Plus d'explications sur cette fonctionnalité peuvent être trouvées ici.En voici par exemple deux pas mon code requêtes par défaut :

Pour maintenir le nombre de faux positifs à un faible niveau, avec CQLinq, vous pouvez également concentrer les résultats des règles uniquement sur le code ajouté ou le code refactorisé, car un référence définie dans le passé.Voir la règle suivante, qui détecte les méthodes trop complexes ajoutées ou refactorisées depuis la ligne de base :

warnif count > 0 
from m in Methods
where m.CyclomaticComplexity > 20 &&
      m.WasAdded() || m.CodeWasChanged()
select new { m, m.CyclomaticComplexity }

Enfin, notez qu'avec NDepend les règles du code peuvent être vérifiées vivre dans Visual Studio et au moment du processus de construction, dans un rapport HTML+javascript généré.

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