2009-10-08 8 views
23

J'ai été chargé de déterminer combien de lignes de code j'ai écrites cette année. Pas très excitant pour un certain nombre de raisons, mais il semble que cela pourrait faire une belle question SO. Donc, dans votre outil de contrôle de version préféré, comment pouvez-vous dire combien de lignes de code ont été modifiées? Dans ma réponse particulière, les lignes blanches et les commentaires comptent pour simplifier le temps alloué à la détermination de la réponse, mais n'hésitez pas à élaborer.Combien de lignes de code ont été modifiées au cours d'une période donnée?

Dans mon cas particulier, j'utilise svn, donc je vais me débarrasser de toutes les sorties --- et autres misc que svn log et svn diff produisent.

+16

Le fait que quelqu'un pose cette question me fait craindre qu'ils pensent que cette mesure signifie quelque chose. – recursive

+5

Est-ce que votre patron Bill Lumberg? – BobbyShaftoe

+0

@recursive - Jeff Atwood semble dire qu'il mesure quelque chose. http://www.codinghorror.com/blog/archives/000637.html – Maslow

Répondre

27

Utilisez StatSVN. Je l'utilise au travail et c'est génial, ça décompose LOC par développeur par mois. Il dessinera de jolis graphiques, vous dira quel jour de la semaine et à quelle heure vous vérifiez le plus de code. Cela vous dira exactement ce que vous devez savoir.

+0

Je le gère maintenant, mais je ne suis pas sûr de la façon dont il traite des branches. –

+0

@Nathan: Je viens de l'essayer. Par défaut, il compte le code dérivé comme s'il était tapé. Mais d'après ce que j'ai vu, il semble possible de ne pas tenir compte des branches complètement. Alors seulement le code qui a été fusionné dans le coffre apparaîtrait. Mais je n'ai parcouru que très rapidement les docs ... – sbi

3

Fisheye peut vous indiquer combien de lignes de code ont été validées par développeur. Il y a une fonction graphique intéressante qui peut vous donner de jolis graphiques pour cela.

-1

En Clearcase, prenez la spécification de configuration et d'ajouter:

time <date-time> 
<rules for choosing branches or labels> 
end time 

Faire une deuxième vue, et comparer les deux. Si plusieurs développeurs travaillent sur les mêmes fichiers, je n'ai aucune idée. Je ne peux pas dire que je suis ravi d'utiliser Clearcase, jamais.

-2

Si vous utilisez subversion, vous pouvez utiliser la commande svn log avec le commutateur --xml et vous pouvez tirer les lignes de code à partir de là. Vous pouvez voir les options de svn log en utilisant svn help log. Puisque votre sortie est xml, vous pouvez parcourir ce fichier xml et agréger vos comptes de lignes dans le code et partir de là.

+2

--xml n'imprime pas cette information même avec l'option -v (verbose). – Antonio

1

J'ai également essayé de résoudre des tâches telles que "combien de lignes ont été supprimées, ajoutées ou simplement changées au cours de la période sélectionnée". J'ai donc écrit un script shell simple (pour Linux uniquement). Il rassemble quelques statistiques sipmle sur les modifications de code. Plus de détails et de script partagé que vous pouvez trouver ici:

http://cyber-fall.blogspot.com/2011/10/tools-linux-svn-generate-statistic.html

espérons qu'il aidera à vous et à d'autres!

8

La solution la plus simple:

svn diff -x --ignore-eol-style -x -w http://svn/tags/releases/1.0 http://svn/tags/releases/2.0/ |diffstat 

ce qui est très rudimentaire et n'exclut pas des inserts de ligne blanche et ainsi de suite, mais peut-être il est assez bon?

+0

Cela affichera deux fois les lignes modifiées (ajoutées et supprimées) – ricab

0

Si vous êtes coincé sur cvs:

cvs annotate > annotate.txt 
rem remove the portion before the name 
sed "s/^[0-9. (]*//" annotate.txt > annotate2.txt 
rem remove the portion after the name 
sed "s/[ ].*$//" annotate2.txt > annotate3.txt 
sort annotate3.txt > annotate4.txt 
uniq -c annotate4.txt > annotate5.txt 

http://jamesjava.blogspot.com/2007/01/who-has-changed-most-lines-in-cvs.html

4

Essayez d'utiliser Hits-de-Code métrique (ce qui est exactement ce que vous recherchez). Vous pouvez recueillir les données en utilisant ce hoc expliqué dans cet article de blog: Hits-of-Code Instead of SLoC

Questions connexes