2010-06-16 29 views
35

Y a-t-il un bon outil qui calcule le nombre de lignes de code modifiées sur une période de temps donnée dans un dépôt Mercurial? Quelque chose le long des lignes de statsvn serait génial, mais tout ce qui compte le nombre de lignes de code modifiées dans les 6 mois fera l'affaire (y compris une combinaison intelligente d'arguments pour hg log). Merci.Comptage des lignes de code modifiées au fil du temps

PS: S'il vous plaît ne pas discuter dans le but de mesurer ce nombre;)

+1

http://code.google.com/p/gource/ va le faire et sera joli dans le processus. :-) – Ken

Répondre

9

J'avais besoin de faire cela, et j'ai passé pas mal de temps avec l'extension de hg churn et des solutions similaires.

En fin de compte, je trouve que ce qui a fonctionné le mieux pour moi était CLOC (Count lignes de code): http://cloc.sourceforge.net/

Vous pouvez donner deux dossiers contenant deux versions d'un projet, et il comptera tous les lignes identiques, modifiées, ajoutées, supprimées. Il reconnaît plusieurs langues et détaille le code, les commentaires et les lignes vides.

Pour l'utiliser, j'ai sorti les deux versions de mon code de Hg dans deux dossiers parallèles, puis utilisé cloc --diff --ignore-espaces

+4

C'est une bonne solution au "problème" car vous venez de télécharger un fichier Perl. Notez que la syntaxe est: './cloc.pl --ignore-whitespace --ignore-case --diff

' – Pascal

+0

ce n'est pas un rapide comme git diff - shortstat, mais il fait un bien meilleur travail de trouver le code dupliqué qui a été copié. – cmcginty

11

Modifier: hg diff et hg log à la fois un support --stat option qui peut le faire pour vous, seulement mieux et plus vite.


J'ai fait un alias lines compter les lignes modifiées (pas nécessairement les lignes de code) pour moi. Essayez de mettre cet alias dans votre fichier .hgrc:

[alias] 
lines = !echo `hg log -pr [email protected] | grep "^+" | wc -l` Additions; echo `hg log -pr [email protected] | grep "^-" | wc -l` Deletions; 

ensuite passer d'abord la révision, suivie par des arguments optionnels:

hg lines tip ou hg lines 123:456 -u brian

Parfois, vous voulez connaître le nombre de lignes modifié en excluant les changements d'espaces uniquement. Cela nécessite d'utiliser diff -w en dessous de log -p. Je mis en place un alias linesw pour cela:

#ignore whitespace 
linesw = ![[ $1 =~ : ]] && r=$1 || r="$1~1:$1"; echo `hg diff -wr $r | grep "^+\([^+]\|$\)" | wc -l` Additions; echo `hg diff -wr $r | grep "^-\([^-]\|$\)" | wc -l` Deletions; 

hg linesw tip ou hg lines 123:456

Notez qu'ils se comportent un peu différemment parce diff et log comportent différemment - par exemple, log prendra un paramètre --user tout diff ne sera pas, et lors du passage d'une plage, log affichera les changements validés dans la première révision donnée dans la plage, tandis que diff ne le fera pas.

Cela a seulement été testé en utilisant bash.

+0

N'utilisez pas la commande hg log. Cela inclut également toutes les modifications apportées à l'hostel linéaire repo entre les deux ID de validation, y compris les validations qui n'ont pas été validées dans la branche en cours. – Paul