mercurial lines-of-code

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.