2. Código duplicado
El código repetido es una métrica básica de calidad, y junto con la complejidad ciclomática, es el mayor enemigo de la mantenibilidad (aquí hay un post sobre el tema y aquí otro post sobre estas dos métricas)
Figura 6. Código repetido
- Líneas duplicadas: Número de líneas involucradas en una duplicación
- Bloques duplicados: Número de bloques de líneas duplicadas
- Archivos duplicados:Número de archivos involucrados en una duplicación.
- Líneas duplicadas (%): (Número de líneas duplicadas/Número total de líneas) *100
Por defecto se considera una duplicación si 10 líneas sucesivas de código Java están repetidas, pero se puede modificar este límite a través de la propiedad «sonar.cpd.java.minimumLines»
Por ejemplo, si vamos a analizar un proyecto con Maven, y queremos cambiar a 30 el límite al que se considera código duplicado, deberemos escribir en la terminal lo siguiente:
«mvn sonar:sonar -D sonar.cpd.java.minimumLines=30»
Aún así, después de consultar detenidamente la documentación y los foros de Sonar, no nos queda muy claro el criterio que utiliza la herramienta para considerar el código duplicado, y no tenemos información acerca de a partir de cuánto se considera duplicación en otros lenguajes de programación.
3. Documentación y comentarios
Figura 7. Documentación y comentarios
- Documentación
- API pública:Número de clases públicas, métodos públicos (sin contar métodos de acceso como get y set) y propiedades públicas (sin contar aquellas que son de la forma public static)
- API pública sin documentar: Númerode APIs públicas sin una cabecera de comentarios, sin un Javadoc.
- API pública documentada (%):
- Comentarios
- Líneas comentadas: Número de líneas que contienen un comentario.
- Comentarios (%):
De esta fórmula se deduce lo siguiente:
- Si el valor es un 50%, el número de líneas de código es igual al número de líneas comentadas.
- Si el valor es un 100%, significa que el archivo solo contiene comentarios.
4.Tamaño
Figura 8. Métricas relacionadas con el tamaño del sistema
- Líneas de código: Número de líneas de código, sin contar los comentarios (en la Figura 8 serían 365375)
- Líneas: Número de líneas totales (líneas de código + líneas de comentarios).
- Accesores: Número de métodos get () y set () totales.
El resto de métricas que aparecen siguen la misma forma que las anteriores, es decir, se muestra el número de paquetes, clases, métodos o ficheros totales.
5. Violaciones
Figura 9. Violaciones de código
- “Issues”: Número de “malas prácticas” (violaciones) en el código. Por ejemplo, los números mágicos, llamar a un método que no es un constructor con el mismo nombre que una clase etc.
- Cumplimiento de reglas (%)=
Si el valor es negativo, se redondea a 0%
Las violaciones ponderadas son la suma de todas las violaciones multiplicadas por los coeficientes asociados a su severidad. Para asociar un peso a las severidades, hay que loguearse como administrador en Sonar, e ir a Ajustes > Ajustes Generales y establecer la propiedad pesos de las reglas (Rules weight). Los valores por defecto son 10 para las violaciones bloqueantes, 5 para las violaciones críticas, 3 para las violaciones mayores y 1 para las menores. Logueados como administradores en la herramienta, podremos definir nuevas violaciones en el código.
Post anterior: Cómo interpretar métricas de calidad software: entendiendo el cuadro de mando de Sonar (1/3)
Puedes ver la continuación de esté post aquí: Cómo interpretar métricas de calidad software: entendiendo el cuadro de mando de Sonar (3/3)