Calculer les métriques de code [fermé]


87

Existe-t-il des outils disponibles pour calculer les métriques de code (par exemple le nombre de lignes de code, la complexité cyclomatique, le couplage, la cohésion) pour votre projet et produire au fil du temps un graphique montrant les tendances?


Cela dépend de la langue, quelle langue utilisez-vous?
Valentin Rocher

Réponses:


67

Sur mon dernier projet, j'ai utilisé SourceMonitor . C'est un bel outil gratuit pour l'analyse des métriques de code.
Voici un extrait du site officiel de SourceMonitor:

  • Collecte des métriques en un seul passage rapide dans les fichiers source.
  • Mesure des métriques pour le code source écrit en C ++, C, C #, VB.NET, Java, Delphi, Visual Basic (VB6) ou HTML.
  • Inclut des métriques au niveau des méthodes et des fonctions pour C ++, C, C #, VB.NET, Java et Delphi.
  • Enregistre les métriques dans les points de contrôle pour comparaison pendant les projets de développement logiciel.
  • Affiche et imprime des mesures dans des tableaux et des graphiques.
  • Fonctionne dans une interface graphique Windows standard ou dans vos scripts à l'aide de fichiers de commandes XML.
  • Exporte les métriques vers des fichiers XML ou CSV (valeurs séparées par des virgules) pour un traitement ultérieur avec d'autres outils.

Pour .NET à côté de NDepend qui est tout simplement le meilleur outil, je peux recommander vil .

Les outils suivants peuvent effectuer une analyse des tendances:


SourceMonitor semble être un outil uniquement Windows. Existe-t-il quelque chose de similaire pour d'autres systèmes d'exploitation (Linux, BSD, Mac)?
Mnementh le

Mnementh, je suis développeur Windows, je ne connais pas de tels outils pour les gars FOSS. Peut-être que vous pouvez essayer d'exécuter SourceMonitor sous l'émulateur Wine?
aku

2
Il existe maintenant un outil de type NDepend pour C ++, CppDepend
Goosey

SourceMonitor est un usage non commercial uniquement.
Scott 混合 理论

2
@Kevin 混合 理论 lisez attentivement la licence - vous pouvez l'utiliser dans n'importe quel environnement que vous ne pouvez tout simplement pas vendre. «Autrement dit, vous pouvez utiliser cet exécutable dans le cadre de vos propres efforts de développement logiciel (commercial ou autre) mais vous ne pouvez pas le vendre ...»
Natalie Adams

12

Sonar est définitivement un outil à prendre en compte, notamment pour les projets Java. Cependant, il gérera également le code PHP ou C / C ++, Flex et Cobol.

Voici une capture d'écran qui montre quelques métriques sur un projet:

texte alternatif http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png

Notez que vous pouvez essayer l'outil en utilisant leur site de démonstration à l' adresse http://nemo.sonarsource.org


Apparemment, SO ne me laisse pas réparer le lien - le lien devrait être: nemo.sonarsource.org
Natalie Adams


8

Je cherchais également un outil / plugin de métrique de code pour mon IDE, mais pour autant que je sache, il n'y en a aucun (pour eclipse) qui montre également un graphique de la complexité sur une période de temps spécifiée. Cependant, j'ai trouvé le plugin eclipse metrics , il peut gérer:

  • Complexité cyclomatique de McCabe
  • Accouplements efférents
  • Manque de cohésion dans les méthodes
  • Lignes de code dans la méthode
  • Nombre de champs
  • Nombre de niveaux
  • Nombre de sections locales dans la portée
  • Nombre de paramètres
  • Nombre d'énoncés
  • Méthodes pondérées par classe

Et en l'utilisant, je n'ai pas manqué l'option graphique que vous recherchez également.
Je pense que si vous ne trouvez pas de plugins / outils capables de gérer la représentation graphique au fil du temps, vous devriez regarder l'outil qui vous convient le plus et vous offre toutes les informations dont vous avez besoin; même si les informations fournies concernent uniquement la version actuelle de votre projet.

En remarque, le plugin eclipse metrics vous permet d' exporter les données vers un fichier externe (le lien va vers un exemple), donc si vous utilisez un outil de contrôle de source, et vous devriez!, Vous pouvez toujours exporter les données pour le spécifique compilez et stockez le fichier avec le code source, de cette façon, vous avez toujours un moyen (basique) de remonter le temps et de vérifier les différences.


4

gardez à l'esprit que ce que vous mesurez est ce que vous obtenez. loc ne dit rien sur la productivité ou l'efficacité.

évaluez un programmeur par lignes de code et vous obtiendrez .. lignes de code. le même argument vaut pour les autres métriques.

otoh .. http://www.crap4j.org/ est une métrique très conservatrice et utile. il établit la complexité par rapport à la couverture.


2
Évaluez un programmeur par lignes de commentaires et vous obtiendrez ... lignes de commentaires.
EML


3

Concernant l'outil NDepend, il est livré avec 82 métriques de code différentes, du nombre de lignes de code au rang de méthode (popularité), complexité cyclomatique, manque de cohésion des méthodes, couverture en pourcentage (extraite de NCover ou VSTS), profondeur d'héritage. .

Avec son système de règles, NDepend peut également trouver des problèmes et estimer la dette technique, ce qui est une métrique de code intéressante (quantité d'efforts de développement pour résoudre les problèmes par rapport à la quantité de temps de développement gâchée par an pour laisser les problèmes non résolus).

Toutes ces mesures sont détaillées ici .


2

Si vous êtes dans l'espace .NET, CodeRush de Developer Express fournit le LOC, la complexité cyclomatique et l' analyse (plutôt excellente, à mon humble avis ) de la complexité de la maintenance du code en temps réel.

(Désolé pour le lien Maintenance Complexity; il va dans le cache de Google. L'original semble être un guichet automatique hors ligne).


2

Atlassian FishEye est un autre excellent outil pour le travail. Il s'intègre à votre système de contrôle de source (prend actuellement en charge CVS, SVN et Perforce) et analyse tous vos fichiers de cette façon. L'analyse est cependant assez basique et le produit lui-même est commercial (mais à un prix très raisonnable, IMO).

Vous pouvez également obtenir un module complémentaire appelé Crucible qui facilite les revues de code par les pairs.


2

Pour Visual Studio .NET (au moins C # et VB.NET), je trouve que les StudioTools gratuits sont extrêmement utiles pour les métriques. Il ajoute également un certain nombre de fonctionnalités trouvées dans des outils commerciaux tels que ReSharper .


2

Code Analyzer est un outil simple qui génère ce type de métrique.

texte alternatif
(source: teel.ws )


3
Alors que l'interface graphique semble agréable, les métriques qui sont générées semblent tout à fait inutiles - par exemple "Lignes d'espaces par fichier"?
kizzx2




0

Sur le front PHP, je crois par exemple que phpUnderControl inclut des métriques via phpUnit (si je ne me trompe pas).

Gardez à l'esprit que les indicateurs sont souvent erronés. Par exemple, un codeur qui travaille sur des problèmes insignifiants produira plus de code et là pour mieux regarder sur vos graphiques, qu'un codeur qui résout les problèmes complexes.


0

Si vous recherchez une analyse des tendances, cela signifie-t-il vraiment quelque chose à mesurer au-delà du SLOC?

Même si vous faites simplement un grep pour les points-virgules de fin et que vous comptez le nombre de lignes renvoyées, vous recherchez la cohérence de la technique de mesure SLOC. De cette façon, la mesure d'aujourd'hui peut être comparée de manière significative à la mesure du mois dernier.

Je ne vois pas vraiment ce que donnerait une tendance de la complexité cyclométrique McCabe? Je pense que CC devrait être davantage utilisé pour un instantané de la qualité afin de fournir des commentaires aux développeurs.

Edit: Ooh. Je viens de penser à quelques autres mesures qui pourraient être utiles. Commentaires en pourcentage du SLOC et de la couverture des tests. Ni l'un ni l'autre que vous ne voulez laisser filer. Revenir pour rénover l'un ou l'autre n'est jamais aussi dieu que de les faire "dans le feu de l'action!"

HTH.

à votre santé,

Rob


0

Scitools 'Understanding a la capacité de générer de nombreuses métriques de code pour vous. Je n'ai pas beaucoup d'expérience avec les fonctionnalités de métrique de code, mais les fonctionnalités d'analyse statique en général étaient bonnes et le prix était très raisonnable. Le support était excellent.


0

Project Code Meter donne un rapport d'historique de développement différentiel (au format Excel) qui montre vos métriques de progression de codage en SLOC, temps et pourcentage de productivité (c'est l'estimation du temps est basée sur la complexité cyclomatique et d'autres métriques). Ensuite, dans Excel, vous pouvez facilement produire le graphique souhaité.

voir cet article qui le décrit étape par étape: http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm


0

Pour Java, vous pouvez essayer notre outil, QualityGate, qui calcule plus de 60 métriques de code source, suit tous les changements dans le temps et fournit également une évaluation globale de la maintenabilité du code source.

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.