mercurial - Contar líneas de código cambiadas a lo largo del tiempo
lines-of-code (3)
La extensión hg churn es lo que quieres.
Puede obtener resultados visuales con la actividad de hg o la tabla de hg .
¿Existe alguna buena herramienta que calcule la cantidad de líneas de código modificadas durante un período de tiempo determinado en un repositorio mercurial? Algo statsvn sería genial, pero cualquier cosa que cuente la cantidad de líneas de código modificadas dentro de 6 meses servirá (incluida una inteligente combinación de argumentos para hg log). Gracias.
PD: por favor no discuta el propósito de medir este número;)
Necesitaba hacer esto, y pasé bastante tiempo con la extensión hg churn y soluciones similares.
Al final, descubrí que lo que funcionaba mejor para mí era CLOC (Count Lines of Code): http://cloc.sourceforge.net/
Puede darle dos carpetas que contengan dos versiones de un proyecto, y contará todas las líneas que sean iguales, modificadas, agregadas o eliminadas. Reconoce múltiples idiomas y códigos de itemises, comentarios y líneas en blanco.
Para usarlo, saqué las dos versiones de mi código de Hg en dos carpetas paralelas, y luego usé cloc --diff --ignore-whitespace
Editar : hg diff
y hg log
soportan una opción --stat
que puede hacer esto por usted, solo que mejor y más rápido.
Hice un alias llamado lines
para contar líneas cambiadas (no necesariamente líneas de código) para mí. Intenta poner este alias en tu archivo .hgrc:
[alias]
lines = !echo `hg log -pr $@ | grep "^+" | wc -l` Additions; echo `hg log -pr $@ | grep "^-" | wc -l` Deletions;
A continuación, páselo primero a la revisión, seguido de los argumentos opcionales:
hg lines tip
o hg lines 123:456 -u brian
Algunas veces desea saber la cantidad de líneas modificadas, excluyendo los cambios de solo espacio en blanco. Esto requiere utilizar diff -w
debajo en lugar de log -p
. Configuré un linesw
alias para esto:
#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
o hg lines 123:456
Tenga en cuenta que se comportan de forma ligeramente diferente porque diff
y log
comportan de manera diferente; por ejemplo, log
tomará un parámetro --user
, mientras que diff
no lo hará, y al pasar un rango, el log
mostrará los cambios comprometidos en la primera revisión dada en el rango, mientras diff
no lo hará
Esto solo ha sido probado usando bash.