web-dev-qa-db-fra.com

Stylecop vs FXcop

Stylecop a-t-il remplacé FXcop? Quel produit devrions-nous utiliser avec Visual Studio 2008?

92
JL.

Stylecop est un outil d'analyse de style qui fonctionne au niveau du code source. Il existe principalement pour fournir un style commun unique que les projets gérés peuvent utiliser pour rester cohérent dans le monde plus large des logiciels gérés. Il prend des décisions concernant le style principalement pour éviter les guerres saintes (après tout, le style est presque toujours une chose intrinsèquement subjective). Je ne pense pas avoir rencontré quelqu'un qui a aimé toutes les règles de StyleCop, mais c'est ok. Cela signifie que StyleCop est généralement un bon compromis parmi le vaste ensemble de directives de style qui existent. (Si les règles de stylecop étaient hautement personnalisables, au-delà de leur simple activation/désactivation, cela irait à l'encontre de l'objectif de l'outil.)

FxCop, en revanche, est un outil d'analyse statique qui fonctionne au niveau de l'assembly géré. On peut lui donner des directions via des attributs car il peut voir des attributs sur des éléments de code, par exemple. Il détecte des problèmes qui peuvent être vus au niveau "binaire" (pour ainsi dire) par opposition au niveau syntaxique.

Pour répondre à votre question, StyleCop ne remplace pas FxCop et FxCop ne remplace pas Stylecop. Ce sont deux outils différents avec deux objectifs différents qui peuvent tous deux offrir un réel avantage à votre code.

(AKA, je cours avec les deux. :))


Quelques exemples de choses que l'on pourrait détecter par rapport à des choses que l'autre pourrait détecter:

Les violations StyleCop peuvent inclure des avertissements liés à: l'espace blanc, le formatage, la documentation de la méthode publique via les commentaires xml, l'ordre de définition de la méthode dans une classe.

Les violations de FxCop peuvent inclure des avertissements liés à: la mondialisation, le couplage étroit, la complexité cyclomatique, les éventuelles déréférences nulles.

163
Greg D

stylecop fonctionne sur votre code source C #. fxcop examine votre code compilé à partir de n'importe quel langage .net.

16

Une alternative ou un bon complément à FxCop/StyleCop serait d'utiliser l'outil commercial NDepend . Avec cet outil, on peut écrire la règle de code sur les requêtes LINQ (à savoir CQLinq) . Avertissement: je suis l'un des développeurs de l'outil

Plus de 200 règles de code sont proposées par défaut, celles-ci incluent design, architecture, qualité du code, évolution du code, conventions de dénomination, code mort, . NET Fx usage ...

CQLinq est dédié à l'écriture de règles de code qui peuvent être vérifiées en direct dans Visual Studio , ou qui peuvent être vérifiées pendant le processus de génération et signalées dans un rapport HTML/javascript .

La force de CQLinq sur FxCop ou StyleCop, c'est que il est simple d'écrire une règle de code , et d'obtenir immédiatement résultats. Des installations sont proposées pour parcourir les éléments de code correspondants. Concrètement, cela ressemble à ça:

CQLinq code rule

FXCop effectue une analyse de code statique de vos assemblys de code managé. Considérez-le comme la recherche de problèmes qui causeront des problèmes au moment de l'exécution ou qui affecteront la façon dont le développeur pense que le code s'exécutera (code inaccessible).

StyleCop analyse la structure de votre code d'un point de vue texte. Considérez cela comme des problèmes qui affecteront votre expérience de développement et de conception (formatage, conventions de dénomination, documentation)

Ce sont tous deux des outils TRÈS précieux et vous devez les utiliser tous les deux, mais ils se concentrent sur des problèmes différents.

6
AllenSanborn

StyleCop effectue l'analyse du code source n'est pas très configurable. Il ne fait pas vraiment la même chose que FxCop, qui analyse le code compilé.

Les articles de wikipedia sur ces derniers résument bien les différences:

http://en.wikipedia.org/wiki/StyleCop

http://en.wikipedia.org/wiki/FxCop

5
Andrew Rollings