Eclipse cuenta líneas de código

107

He intentado las métricas plug-in y aunque es agradable y todo, no es lo que mi jefe está buscando. Cuenta una línea con solo una }como línea y no quiere que eso cuente como "no es una línea, es una elección de estilo". También necesito generar algún tipo de informe sobre las métricas proporcionadas. ¿Existen buenas herramientas para esto?

confundido
fuente
1
Pregunta al margen: ¿se utilizará como métrica para mostrar qué tan bien están trabajando sus desarrolladores de software? Si es así, el recuento de caracteres / espacios no en blanco podría ser mejor. Aún así, parece una métrica realmente arbitraria ... Como dijo un amigo: "en general, más líneas de código para resolver un problema no es mejor (o peor) que menos líneas de código para resolver el mismo problema"
Sancarn

Respuestas:

93

Instale el complemento de métricas de Eclipse . Para crear un informe HTML (con XML y CSV opcionales) right-click a project -> Export -> Other -> Metrics.

Puede ajustar las métricas de Líneas de código ignorando las líneas en blanco y solo para comentarios o excluir Javadoc si lo desea. Para hacer esto, consulte la pestaña en Preferences -> Metrics -> LoC.

Eso es. No hay una opción especial para excluir las llaves {}.

El complemento ofrece una métrica alternativa a LoC llamada Número de declaraciones . Esto es lo que el autor tiene que decir al respecto:

Esta métrica representa el número de declaraciones en un método. Lo considero una medida más robusta que Lines of Code ya que esta última es frágil con respecto a las diferentes convenciones de formato.

Editar:

Después de aclarar su pregunta, entiendo que necesita una vista de violaciones de métricas en tiempo real, como advertencias o errores del compilador. También necesita una función de informes para crear informes para su jefe. El complemento que describí anteriormente es para informes porque tienes que exportar las métricas cuando quieras verlas.

aliopi
fuente
Exactamente lo que estaba buscando y una buena función de exportación.
george_h
1
La versión actual de este complemento (3.14.1) no parece funcionar con Eclipse Luna (4.4). Sorprendentemente, el antiguo complemento de métricas de Sourceforge todavía funciona ...
ejain
Mucha gente informa que ya no funciona, pero nadie presenta un error en SourceForge ...
Thomas Weller
6
Si. No puedo ver ninguna opción debajo right click a project -> Export, he instalado el complemento directamente desde el mercado de eclipse (la versión es) Eclipse Metrics 3.12.0, ¿alguien puede ayudarme? ¡Gracias!
OverrockSTAR
263

Siempre existe la "fuerza bruta":

  1. Buscar-> Archivo

  2. Escriba lo siguiente en "Contiene texto" -> ^.*$. Luego, marque la casilla de verificación "Expresión regular"

  3. Escriba lo siguiente en "Patrones de nombre de archivo" -> *.java

  4. Haga clic en "Buscar"

  5. Compruebe el número de coincidencias en la pestaña "Buscar".

cristiano
fuente
11
Esto hizo exactamente lo que estaba buscando. No excluye los corchetes ni nada elegante, pero da la respuesta que estaba buscando, EN eclipse, SIN complementos. ¡Gracias!
Lucas
24
También puede usar \n[\s]*e ignorará las líneas vacías también
Ascalonian
3
¡Muy buena solución sin la necesidad de otro complemento! +1
Stephan
2
Esto funciona con el último eclipse (neón), pero el complemento de métricas no lo hace
Anatoly Yakimchuk
2
Los comentarios de @omerio también deben escribirse y son parte necesaria de cualquier código fuente. Sin contar esos induce que no serían importantes o son solo texto ciego, lo cual es un grave error.
Axel Amthor
23

Si está en OSX o * NIX use

Obtenga todas las líneas reales de código java de archivos * .java

find . -name "*.java" -exec grep "[a-zA-Z0-9{}]" {} \; | wc -l

Obtenga todas las líneas de los archivos * .java, que incluyen líneas vacías y comentarios

find . -name "*.java" -exec cat | wc -l

Obtenga información por archivo, esto le dará [ruta al archivo + "," + número de líneas]

find . -name "*.java" -exec wc -l {} \;
ZOXIS
fuente
Al ejecutar el primer comando en OSX, obtengo: grep: rango de caracteres no válido 0
omerio
Esto me ha funcionado encontrar. -nombre "* .java" | gato xargs | grep '[alnum]' | wc -l
omerio
2
debería serfind . -name "*.java" | xargs cat | grep "[a-zA-Z0-9{}]" | wc -l
warrior107
8

Otra forma sería utilizar otra utilidad de locomotora, como LocMetrics, por ejemplo.
También enumera muchas otras herramientas de locomotoras . La integración con Eclipse no siempre estaría ahí (como lo estaría con Metrics2 , que puede consultar porque es una versión más reciente que Metrics ), pero al menos esas herramientas pueden razonar en términos de líneas lógicas (calculadas sumando el punto y coma terminales y las llaves terminales).
También puedes comprobar con eclipse-metrics que está más adaptado a lo que esperas.

VonC
fuente
7

Otra herramienta es Google Analytix , que también le permitirá ejecutar métricas incluso si no puede construir el proyecto en caso de errores.

ılǝ
fuente
Aunque el sitio dice que es solo para versiones anteriores de eclipse, para mí funciona bien en Luna. Gracias por esto.
CamHart
7

Una forma posible de contar líneas de código en Eclipse:

utilizando el menú Buscar / Archivo ..., seleccione la pestaña Búsqueda de archivos, especifique \ n [\ s] * para Contener texto (esto no contará líneas vacías) y marque Expresión regular.

Punta de sombrero: www.monblocnotes.com/node/2030

ccleve
fuente
guau, eso es super genio. Es bueno que no cuente líneas en blanco, siempre y cuando no le paguen por el número ...
JohnnyB
1

Creé un complemento de Eclipse, que puede contar las líneas de código fuente. Es compatible con Kotlin, Java, Java Script, JSP, XML, C / C ++, C # y muchos otros tipos de archivos.

Por favor échale un vistazo. ¡Cualquier comentario sería apreciado!

el repositorio de git-hub está aquí

Li Ying
fuente
0

ProjectCodeMeter cuenta LLOC (líneas lógicas de código) exactamente como lo describió (solo líneas efectivas). se integra en eclipse como herramienta de métricas de código externo , sin embargo, no es en tiempo real, genera un informe. en realidad cuenta muchas métricas de código fuente, como complejidad, complejidad aritmética, cadenas codificadas, constantes numéricas ... incluso estima el tiempo de desarrollo en horas .

Benjamín
fuente
0

Para el análisis estático, he usado y recomendado SonarQube, que ejecuta casi todas las métricas que pueda desear en una amplia gama de idiomas y es gratis en la versión básica (tiene que pagar para analizar el tipo de idiomas que solo codifique con una pistola en la cabeza).

Debe instalarlo como una aplicación web que ejecuta el análisis desde su repositorio de código fuente, pero también tiene un complemento Eclipse .

Es exagerado si solo quiere saber, como una sola vez, cuántas líneas de código hay en su proyecto. Si desea realizar un seguimiento de las métricas a lo largo del tiempo, comparar proyectos, generar advertencias cuando se excede un umbral, etc., es fantástico.

Divulgación: no tengo ninguna relación financiera con SonarSource.

Andrew Spencer
fuente
0

Lo primero que debe hacer es determinar su definición de "línea de código" (LOC). En tu pregunta

Cuenta una línea con solo una} como línea y no quiere que eso cuente como "no es una línea, es una elección de estilo".

y en las respuestas, por ejemplo,

Puede ajustar las métricas de Líneas de código ignorando las líneas en blanco y solo para comentarios o excluir Javadoc si lo desea

se puede decir que la gente tiene opiniones diferentes sobre lo que constituye una línea de código. En particular, las personas suelen ser imprecisas sobre si realmente quieren el número de líneas de código o el número de declaraciones. Por ejemplo, si tiene la siguiente línea realmente larga llena de declaraciones, ¿qué desea informar, 1 LOC o cientos de declaraciones?

{ a = 1; b = 2; if (a==c) b++; /* etc. for another 1000 characters */ }

Y cuando alguien le pregunte cómo está llamando LOC, asegúrese de que puede responder, incluso si es simplemente "mi definición de LOC es la definición de Metrics2". En general, para el código formateado más comúnmente (a diferencia de mi ejemplo), las herramientas populares darán números bastante similares, por lo que Metrics2, SonarQube, etc. deberían estar bien, siempre que los use de manera consistente. En otras palabras, no cuente el LOC de algún código usando una herramienta y compare ese valor con una versión posterior de ese código que se midió con una herramienta diferente.

kc2001
fuente