Construí un módulo para contar las líneas de código (LOC) de un proyecto Java. Para este propósito tuve que ignorar:
Logré los dos primeros usando la comprensión de la lista en las líneas del archivo con expresiones regulares y resolví también el tercer punto visitando las cadenas del archivo completo con la coincidencia y sustitución de patrones adecuadas. Me preguntaba, ¿existe una forma mejor y / o más eficaz de alcanzar el mismo objetivo?
PD: Opté por la sustitución, incluso si es más pesada que contar y restar, debido al hecho de que los comentarios de varias líneas se pueden entrelazar con el código real en la misma línea. Un ejemplo de comentarios engañosos de varias líneas puede ser:
String test2 = "abc /* fake comment*/";
String cde = "this is a test";//an inline comment
String efg = "ciccio"; /*this is a
weird comment*/ String hil = "pluto";
Sí, puedes probar diferentes formas.
lexical SingleLineComment = "//" ~[\n] "\n";
y lexical OtherStuff = ![\\]+ !>> ![\\]
. El árbol de análisis que aparece se puede visitar para contar el tamaño de todos los comentarios y se puede restar de la cantidad total.lang::java
y analizar de forma similar el árbol de análisis^
y $
, para que lo visit
que escribiste sea más rápido.Es recomendable habilitar el perfilador de CPU Rascal en el REPL: :set profiling true
y ver dónde está el nodo AST de cuello de botella real en el perfil que se imprime después de ejecutar una prueba.
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras