Stylecop contre FXcop


Réponses:


171

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érents 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 que j'ai jamais rencontré quelqu'un qui aimait 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, d'autre part, est un outil d'analyse statique qui fonctionne au niveau de l'assemblage géré. Il peut recevoir des directions via des attributs car il peut voir des attributs sur des éléments de code, par exemple. Il détecte les 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 fournir un réel avantage pour votre code.

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


Quelques exemples des choses que l'un pourrait détecter par rapport aux choses que l'autre pourrait détecter:

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

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


1
Oui, les réponses précédentes comparant les deux sont fausses sur tous les plans. StyleCop et FxCop exécutent deux tâches très différentes, et il vaut la peine d'examiner la valeur que chacun fournit sur votre base de code et pourquoi vous devriez les exécuter.
Jedidja

3
Convenez que toutes les règles de StyleCop ne sont pas bonnes, mais comme vous le dites, celles que vous ne voulez pas peuvent être désactivées. Nous utilisons StyleCop - après avoir désactivé les règles stupides, cela nous offre un bon rapport qualité-prix - à faible coût ..! Conseillé. (notez que nous l'avons détesté à première vue ..)
stiank81

@ stiank81: Oui, je pense que tout le monde déteste StyleCop au début. Après un peu de temps, cependant, les avantages s'établissent vraiment et il s'avère être un outil très utile pour maintenir la cohérence dans la source. :)
Greg D

1
bonne réponse à ce que je cherchais :)
GibboK

16

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


Donc, si vous utilisez Stylecop, FXCop peut-il ajouter de la valeur?
JL.

Vraiment, il vaut mieux utiliser FxCop.
Andrew Rollings

Au moins pour le moment, jusqu'à ce qu'il devienne plus configurable. :)
Andrew Rollings

1
Il est peu probable que stylecop devienne beaucoup plus configurable. Une fonctionnalité bien plus importante pour stylecop est la correction automatique des violations de style.
Greg D

nous utilisons Resharper pour rendre automatiquement le code conforme aux règles de stylecop. Cela seul en vaut le prix d'achat. Et vous bénéficiez de tous les autres avantages en plus de celui-là.
Aucun remboursement Aucun retour

11

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

Plus de 200 règles de code sont proposées par défaut, ceux - ci comprennent la conception , l' architecture , la qualité du code , l' évolution du code , les conventions de nommage , code mort , utilisation .NET Fx ...

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 rapportées dans un rapport HTML / javascript .

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

Règle de code CQLinq


6

FXCop effectue une analyse de code statique de vos assemblys de code managé. Considérez cela 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 fonctionnera (code inaccessible).

StyleCop analyse la structure de votre code du point de vue du 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 devriez utiliser les deux, mais ils se concentrent sur des problèmes différents.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.