2010-01-25 4 views
25

voir aussi VB.NET Static Code AnaylsisQuels StyleCop comme outils sont là pour VB.NET

Pour le meilleur ou pour le pire, nous avons maintenant un codage des normes VB.NET document qui est basé sur une norme de codage C# telle qu'appliquée par StyleCop.

Par exemple

  • le nombre de places que vous devriez mettre dans chaque côté d'un signe « + » etc
  • tous les membres de l'instance (champs et méthodes!) Doivent être l'accès comme « me.fieldName »
  • tous les membres partagés doivent être accessibles en tant que « className.fieldName »

comme je l'ai tendance à penser:

Si elle est dans un document sur les conditions qu'il doit être vérifier par un système automatique

Je cherche (idéalement gratuit) des outils qui vérifiera que peu de règles sur le code VB.NET, comme ce sont des problèmes de style qui ne sont pas inclus dans la sortie compilée, FxCop n'est pas utile.

(Je ferais personnellement correspondre plutôt que nous vérifions simplement des choses importantes comme le code dupliqué et le caractère unique pour chaque classe (donc plus de milliers de classes de lignes!), Mais comme je dois garder le document de codage standard d'avoir un outil pour me aider à le faire.)

voir aussi Enforcing using the class name whenever a shared member is accessed.

a propos de la générosité.
Je suis à la recherche d'une liste d'outils de vérification de code VB.NET, avec un bref résumé de ce que chaque outil peut faire et de ses limites. Si les outils ne sont pas gratuits, veuillez inclure un idéal de coût.


Est-ce que quelqu'un a de l'expérience en utilisant CodeRush/Refactor! ou ReSharper avec VB.NET pour vérifier ce type de problèmes de style de codage?

Répondre

10

Je ne connais pas d'outils d'analyse de code source libre avec un bon support VB. Il y a, cependant, au moins deux outils commerciaux qui peuvent convenir:

  1. submain CodeIt.Right
  2. SSW Code Auditor

Personnellement, je préfère le mécanisme de création de règles CodeIt.Right, donc je favoriseraient si un développement considérable de règles personnalisées était prévu. Cependant, si vous voulez juste utiliser des règles prêtes à l'emploi, Code Auditor est livré avec quelques règles de style de code de plus que CodeIt.Right, dont la plupart des règles intégrées ciblent l'IL compilé (comme FxCop).

+0

CodeIt.Right cible en fait le code source non l'IL (contrairement FxCop) – sergeb

+0

@Serge compilé: Toutes mes excuses. Mon spéléo Reflector n'est pas allé assez loin - je me suis arrêté quand j'ai vu combien peu de règles traitaient du style de code «brut». Quelque chose que j'ai vu à l'époque m'a fait penser que les règles qui ressemblent aux règles de FxCop étaient basées sur un moteur d'inspection IL, mais je ne peux pas imaginer ce que cela aurait pu être maintenant que j'ai revisité les assemblages pertinents ... –

6

Les seuls que je connais sont:

Microsoft's FxCop

Bien sûr, cela ne fonctionne que sur des ensembles compilés, donc ne donne pas les mêmes fonctionnalités que StyleCop, et certainement ne va pas aider les choses comme les schémas de nommage.

Cependant, la chose la plus proche est:

Aivosto's Project Analyzer v9.0 for Visual Basic, VB.NET and VBA

La version complète est pas libre, mais c'est la chose la plus proche de StyleCop pour VB.NET que je peux trouver.

Il y a eu un certain nombre d'appels pour une version VB.NET de StyleCop de Microsoft, tels que ceux de this thread sur le site code.msdn.microsoft.com. Ce même fil donne également un bon aperçu de la raison pour laquelle une version VB.NET n'existe pas.

+2

FxCop ne permet de nommer, mais pas des choses comme combien de places sont utilisés de chaque côté d'un « = » –

0

Il existe déjà un très bon outil de style intégré au compilateur VB. Il s'appelle Option Explicit On, placez-le en haut du fichier de code source ou utilisez Outils + Options + Projet et Solutions + VB Defaults, Option Explicit = On. Si ce n'était pas activé précédemment, il pourrait y avoir une montagne d'erreurs lorsque vous compilez votre code après avoir changé cela. Si elle est propre ou déjà allumée, sachez que vous êtes près de 95% à écrire du code C# propre et que la langue n'a plus vraiment d'importance.

+3

Explicit ne contraint pas les conventions de nom, ou tous les membres partagés doivent être accédés en tant que "className.fieldName" –

1

J'utilise quotidiennement ReSharper et je trouve cela très bien pour le formatage de code et pour résoudre les problèmes de nommage. Il permet de configurer comment le nommage doit être appliqué, comment les problèmes sont affichés (indice, suggestion, avertissement, etc.) et fournit un formateur de code précis (espace, paranthésis, sauts de ligne, ce qualificatif, etc.).

Notez que je ne sais pas si elle peut être exécutée en mode batch.

+1

comment la correspondance de ceci fonctionne pour VB.NET? –

+0

J'ai trouvé que ReSharper fonctionne trop lentement lors de l'écriture de VB.NET pour être utile –

0

Activer l'option Explicit par défaut est toujours une excellente idée et devrait être une pratique courante. Je dirais qu'il devrait être activé par défaut dans VS hors de la boîte. Mais cela ne se rapproche pas de l'application des règles prêtes à l'emploi que StyleCop fait pour C# et ne vous permet pas non plus de créer vos propres règles. La raison de l'existence de StyleCop est que FxCop ne fonctionne que sur des assemblages compilés, laissant les projets web à l'envers pour un outil similaire. Avec StyleCop, les développeurs Web obtiennent la même mise en application des règles et une intégration VS serrée. C'est un excellent outil pour tout développeur C#.

Il est regrettable que ce soit uniquement en C#, une version VB satisferait une grande communauté qui voudrait quelque chose de similaire.

+2

L'analyse fournie par StyleCop est * très * différente de FxCop. StyleCop analyse gentiment le style de code source esthétique tandis que FxCop inspecte l'arborescence du code source pour voir si vous faites de mauvaises choses comme l'appel de méthodes virtuelles depuis des constructeurs. Les deux sont très utiles dans leur propre droit. –

Questions connexes