¿Cómo medirías las líneas de código insertadas / cambiadas / eliminadas (LoC)?

Mi pregunta se refiere a las métricas de LoC. Tengo que proporcionar statistics de líneas insertadas, cambiadas y eliminadas. Mis usuarios usan ClearCase y el ejemplo a continuación basado en él, sin embargo, creo que mi pregunta es general.

Eche un vistazo al siguiente ejemplo (tomado de documentos de ClearCase). Compara dos versiones de file, /main/1 (en el lado izquierdo) y /main/3 (lado derecho).

  ******************************** (file summary) <<< file 1: util.c@@/main/1 >>> file 2: util.c@@/main/3 ******************************** ----------[after 15]------|-------[inserted 16]------ (header) | char *s; (difference) |- ---------[changed 18]-----|----[changed to 19-21]---- (header) return ctime(&clock); | s = ctime(&clock); (difference) - | s[ strlen(s)-1 ] = '\0'; | return s; |- 

No hay duda de que 1 línea fue INSERTADA (línea 16).

Mi pregunta se refiere al cambio en la línea 18: ¿cuántas líneas count aquí?

  • 3 líneas CAMBIADAS?
  • 1 línea CAMBIADA?
  • 1 línea CAMBIADA y 2 líneas INSERTADAS?
  • ¿Crees algo más …?

Por favor, hágame saber lo que piensa (y por qué …). Gracias.

Este ejemplo es de la página man de cleartool diff , y ese diff no es su formatting de diff habitual.

Para ClearCase:

 ---------[changed X]----------|----------[changed to Y]--------- 

Una o más líneas cambiaron en su lugar.

  • X indica qué líneas en el primer file fueron cambiadas.
  • Y indica dónde se encuentran las líneas de reemploop en el segundo file.

Entonces aquí:

  • 1 línea modificada
  • reemplazado por 3 líneas

No existe un equivalente directo con el formatting diffificado utilizado por las otras herramientas (como git), lo que significa que esta pregunta, utilizando el formatting pnetworkingeterminado de cleartool, es específica de ClearCase.

Si el cleartool diff usara la opción -diff_format , eso provocaría que tanto los encabezados como las diferencias se informaran en el estilo de la utilidad diff de UNIX y Linux, lo que permitiría una interpretación más común de esa diferencia.


Cuando se trata de LOC y diff, una buena reference es CLOC , que dará un loc de diff enfocándose en líneas que son:

  • mismo
  • modificado
  • adicional
  • remoto

En tu caso:

  • 1 línea modificada
  • 2 líneas agregadas

La mayoría de los sistemas de SCM le permiten escanear files a medida que se envían como parte de un enganche previo o posterior a la confirmación. Puede ejecutar cualquier herramienta de escaneo que desee y registrar las statistics en algún lugar, tal vez como un atributo en el file.