2010-06-16 6 views
35

¿Existe alguna buena herramienta que calcule la cantidad de líneas de código modificadas durante un cierto período de tiempo en un depósito mercurial? Algo similar a 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.Contando las líneas de código cambiadas a lo largo del tiempo

PD: Por favor, no discutir el propósito de medir este número;)

+1

http://code.google.com/p/gource/ lo hará y se verá bonito en el proceso. :-) – Ken

Respuesta

9

Necesitaba hacer esto, y pasé bastante tiempo con la extensión hg churn y soluciones similares.

Al final, me pareció que lo que funcionó mejor para mí era CLOC (Count líneas de código): http://cloc.sourceforge.net/

Se puede dar de dos carpetas que contienen dos versiones de un proyecto, y empezará a contar toda la líneas que son iguales, modificadas, agregadas, eliminadas. Reconoce múltiples idiomas y códigos de itemises, comentarios y líneas en blanco.

Para usarlo, me sacó las dos versiones de mi código de Hg en dos carpetas paralelas, y luego se usa cloc --diff --ignore un espacio en blanco

+4

Esa es una buena solución para el "problema" ya que solo descarga un archivo Perl. Tenga en cuenta que la sintaxis es: './cloc.pl --ignore-whitespace --ignore-case --diff

' – Pascal

+0

no es tan rápido como git diff --shortstat, pero hace un trabajo mucho mejor para encontrar el código duplicado que se ha copiado. – cmcginty

11

Editar: hg diff y hg log tanto el apoyo de una --stat opción que puede hacer esto por usted, solo que mejor y más rápido.


Hice un alias llamado lines a contar entre las líneas (no necesariamente líneas de código) para mí. Trate de poner este alias en el archivo de .hgrc:

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

A continuación, pasar la revisión que en primer lugar, seguido de los argumentos opcionales:

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

A veces se quiere saber el número de líneas cambiado excluyendo cambios de solo espacio en blanco. Esto requiere el uso de diff -w debajo en lugar de log -p. He creado un alias para este linesw:

#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

Nota se comportan de forma ligeramente diferente debido a diff y log se comportan de manera diferente - por ejemplo, log tendrá un parámetro --user mientras diff no lo hará, y al pasar un rango, log mostrará los cambios realizados en la primera revisión en el rango, mientras que diff no lo hará.

Esto solo se ha probado usando bash.

+0

No use el comando hg log. Esto también incluye todos los cambios en el host de repositorio lineal entre los dos identificadores de confirmación, incluidas las confirmaciones que no se confirmaron en la rama actual. – Paul

Cuestiones relacionadas