Nombre de lignes de code Eclipse


107

J'ai essayé le plugin Metrics et bien qu'il soit sympa et tout, ce n'est pas ce que mon patron recherche. Il compte une ligne avec une seule }comme ligne et il ne veut pas que cela compte comme "ce n'est pas une ligne, c'est un choix de style". J'ai également besoin de générer une forme de rapport sur les métriques fournies. Existe-t-il de bons outils pour cela?


1
Question secondaire: est-ce que cela doit être utilisé comme une métrique pour montrer à quel point vos développeurs de logiciels travaillent bien? Si tel est le cas, le nombre de caractères / non-espaces pourrait être meilleur. Même quand même, cela semble être une métrique vraiment arbitraire ... Comme l'a déclaré un ami: "en général, plus de lignes de code pour résoudre un problème n'est pas meilleur (ou pire) que moins de lignes de code pour résoudre le même problème"
Sancarn

Réponses:


94

Installez le plugin Eclipse Metrics . Pour créer un rapport HTML (avec XML et CSV facultatifs)right-click a project -> Export -> Other -> Metrics .

Vous pouvez ajuster les mesures des lignes de code en ignorant les lignes vides et réservées aux commentaires ou en excluant Javadoc si vous le souhaitez. Pour ce faire, consultez l'onglet àPreferences -> Metrics -> LoC .

C'est tout. Il n'y a pas d'option spéciale pour exclure les accolades{} .

Le plugin offre une métrique alternative à LoC appelée Number of Statements . Voici ce que l'auteur en dit:

Cette métrique représente le nombre d'instructions dans une méthode. Je considère que c'est une mesure plus robuste que les lignes de code car cette dernière est fragile par rapport aux différentes conventions de formatage.

Éditer:

Une fois que vous avez clarifié votre question, je comprends que vous avez besoin d'une vue pour les violations de métriques en temps réel, comme les avertissements ou les erreurs du compilateur. Vous avez également besoin d'une fonctionnalité de reporting pour créer des rapports pour votre patron. Le plugin que j'ai décrit ci-dessus est destiné à la création de rapports car vous devez exporter les métriques lorsque vous voulez les voir.


Exactement ce que je cherchais et une fonctionnalité d'exportation intéressante.
george_h

1
La version actuelle de ce plugin (3.14.1) ne semble pas fonctionner avec Eclipse Luna (4.4). Étonnamment, l'ancien plugin Metrics de Sourceforge fonctionne toujours ...
ejain

Beaucoup de gens rapportent que cela ne fonctionne plus, mais personne ne signale un bogue à SourceForge ...
Thomas Weller

6
Ouais. Je ne peux voir aucune option sous right click a project -> Export, j'ai installé le plug-in directement à partir du marché eclipse - la version est - Eclipse Metrics 3.12.0, quelqu'un peut-il m'aider s'il vous plaît. Merci!
OverrockSTAR


263

Il y a toujours la "force brute":

  1. Rechercher-> Fichier

  2. Tapez ce qui suit dans "Contenant du texte" -> ^.*$. Cochez ensuite la case "Expression régulière"

  3. Tapez ce qui suit dans "Modèles de nom de fichier" -> *.java

  4. Cliquez sur "Rechercher"

  5. Vérifiez le nombre de correspondances dans l'onglet "Recherche".


11
Cela a fait exactement ce que je recherchais. Cela n'exclut pas les crochets ou quoi que ce soit de fantaisie, mais cela donne la réponse que je cherchais, EN éclipse, SANS plugins. Merci!
Luc

24
Vous pouvez également utiliser \n[\s]*et il ignorera également les lignes vides
Ascalonian

3
Très belle solution sans avoir besoin d'un autre plugin! +1
Stephan

2
Cela fonctionne avec la dernière éclipse (néon), mais pas le plugin de métrique
Anatoly Yakimchuk

2
Les commentaires @omerio doivent également être saisis et font partie intégrante de tout code source. Sans compter ces inductions, elles ne seraient pas importantes ou ne sont que du texte aveugle - ce qui est une grave erreur.
Axel Amthor

23

Si sur OSX ou * NIX, utilisez

Obtenez toutes les lignes réelles de code java à partir de fichiers * .java

find . -name "*.java" -exec grep "[a-zA-Z0-9{}]" {} \; | wc -l

Récupère toutes les lignes des fichiers * .java, qui incluent des lignes vides et des commentaires

find . -name "*.java" -exec cat | wc -l

Obtenez des informations par fichier, cela vous donnera [chemin vers le fichier + "," + nombre de lignes]

find . -name "*.java" -exec wc -l {} \;

En exécutant la première commande sous OSX, j'obtiens: grep: plage de caractères invalide 0
omerio

Cela a fonctionné pour moi trouver. -nom "* .java" | chat xargs | grep '[alnum]' | wc -l
omerio

2
devrait êtrefind . -name "*.java" | xargs cat | grep "[a-zA-Z0-9{}]" | wc -l
warrior107

8

Une autre façon serait d'utiliser un autre utilitaire loc, comme LocMetrics par exemple.
Il répertorie également de nombreux autres outils de localisation . L'intégration avec Eclipse ne serait pas toujours là (comme ce serait le cas avec Metrics2 , que vous pouvez vérifier car il s'agit d'une version plus récente que Metrics ), mais au moins ces outils peuvent raisonner en termes de lignes logiques (calculées en additionnant les points-virgules terminaux et les accolades terminales).
Vous pouvez également vérifier avec eclipse-metrics est plus adapté à ce que vous attendez.


7

Un autre outil est Google Analytix , qui vous permettra également d'exécuter des métriques même si vous ne pouvez pas construire le projet en cas d'erreurs


Bien que le site dise que ce n'est que pour les anciennes versions d'Eclipse, cela fonctionne très bien sur Luna pour moi. Merci pour cela.
CamHart

7

Une façon possible de compter les lignes de code dans Eclipse:

à l'aide du menu Recherche / Fichier ..., sélectionnez l'onglet Recherche de fichier, spécifiez \ n [\ s] * pour Contenant du texte (cela ne comptera pas les lignes vides) et cochez Expression régulière.

Pointe du chapeau: www.monblocnotes.com/node/2030


wow, c'est super génie. agréable de ne pas compter les lignes vides, tant que vous n'êtes pas payé par le nombre ...
JohnnyB

1

J'ai créé un plugin Eclipse, qui peut compter les lignes de code source. Il prend en charge Kotlin, Java, Java Script, JSP, XML, C / C ++, C # et de nombreux autres types de fichiers.

Jetez-y un œil. Tout commentaire serait apprécié!

le dépôt git-hub est ici


0

ProjectCodeMeter compte les LLOC (lignes logiques de code) exactement comme vous l'avez décrit (uniquement les lignes effectives). il s'intègre dans eclipse en tant qu'outil de métrique de code externe , mais ce n'est pas en temps réel, il génère un rapport.En fait, il compte de nombreuses métriques de code source telles que la complexité, la complexité arithmétique, les chaînes codées en dur, les constantes numériques .. estime même le temps de développement en heures .


0

Pour l'analyse statique, j'ai utilisé et recommandé SonarQube qui exécute à peu près toutes les métriques que vous pourriez souhaiter sur un large éventail de langues , et est gratuit dans la version de base (vous devez payer pour analyser les types de langues que je code seulement avec un pistolet sur ma tête).

Vous devez l'installer en tant qu'application Web exécutant l'analyse depuis votre référentiel de code source, mais elle dispose également d'un plugin Eclipse .

C'est exagéré si vous voulez juste savoir, de manière ponctuelle, combien de lignes de code il y a dans votre projet. Si vous souhaitez suivre les métriques dans le temps, comparer entre les projets, les avertissements d'incendie lorsqu'un seuil est dépassé, etc., c'est fantastique.

Divulgation: Je n'ai aucune relation financière avec SonarSource.


0

La première chose à faire est de déterminer votre définition de «ligne de code» (LOC). Dans vos deux questions

Il compte une ligne avec juste un} comme ligne et il ne veut pas que cela compte comme "ce n'est pas une ligne, c'est un choix de style"

et dans les réponses, par exemple,

Vous pouvez ajuster les mesures des lignes de code en ignorant les lignes vides et réservées aux commentaires ou en excluant Javadoc si vous le souhaitez

vous pouvez voir que les gens ont des opinions différentes sur ce qui constitue une ligne de code. En particulier, les gens sont souvent imprécis quant à savoir s'ils veulent vraiment le nombre de lignes de code ou le nombre d'instructions. Par exemple, si vous avez la très longue ligne suivante remplie de déclarations, que voulez-vous signaler, 1 LOC ou des centaines de déclarations?

{ a = 1; b = 2; if (a==c) b++; /* etc. for another 1000 characters */ }

Et quand quelqu'un vous demande ce que vous appelez un LOC, assurez-vous que vous pouvez répondre, même si c'est juste "ma définition d'un LOC est la définition de Metrics2". En général, pour le code le plus souvent formaté (contrairement à mon exemple), les outils populaires donneront des nombres assez similaires, donc Metrics2, SonarQube, etc. devraient tous convenir, tant que vous les utilisez de manière cohérente. En d'autres termes, ne comptez pas le LOC d'un code à l'aide d'un seul outil et comparez cette valeur à une version ultérieure de ce code qui a été mesurée avec un outil différent.

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.