Hemos estudiado la calidad de 1000 proyectos GitHub bajo el marco de la ISO 25000

En estos meses, bajo el proyecto Smart Software Quality que ayer os comentaba, lanzamos la evaluación de la calidad del producto software (concretamente de la mantenibilidad) de 1000 proyectos Java de GitHub. Os dejo en este post un resumen del estudio, si quereis más en la página de Smart Software Quality hay un informe más extenso.
Las métricas obtenidas, están relacionadas con la característica mantenibilidad del modelo de calidad de la ISO 25000 (te dejo un post sobre qué es eso de la ISO 25000) y han sido la complejidad ciclomática, el código repetido, incumplimiento de reglas de PMD (relacionadas con el diseño, el acoplamiento, los comentarios, las pruebas, código sin utilizar, etc.) entre otras.
Los 1000 proyectos que elegimos son los mejor valorados en GitHub y tienen un tamaño de hasta casi 2 millones de líneas de código, con una media de 35180 líneas de código. Más de la mitad de los proyectos (59.94%) tienen un tamaño de entre 10 y 10000 líneas de código.

Los problemas más repetidos

Con una gran diferencia, las reglas más incumplidas han sido las de comentarios (con 47.63% de ocurrencias) y acoplamiento (43.63%).
Dentro de los comentarios, “Comment Required” es la regla que más se incumple, con un 75.76%. Destaca la falta de documentación de APIs públicas (con 75,76% de las ocurrencias con respecto a las totales) y un tamaño excesivo de comentarios (24.24%). Solo un 3,65% de los proyectos no tiene ningún comentario mayor de 6 líneas.
De entre todas las reglas de acoplamiento, con un 99.09% de ocurrencias, la Ley de Demeter es la regla más infringida de todas ellas.

Relaciones entre métricas

Los datos recopilados también nos han servido para obtener posbiles relaciones entre métricas de calidad del software.
El estudio que hemos hecho en este punto es bastante extenso, pero como ejemplo, abajo os dejo la relación entre la complejidad ciclomática y las líneas de código.

ccylocmarca

Figura 1. Relación entre la complejidad ciclomática y las líneas de código.

Se ha visto que en los datos de la muestra que hay una correlación fuerte entre el número de líneas de código de un proyecto y su complejidad ciclomática (cosa que es bastante lógica, pero que no está demás contrastarla).
También existe una relación significativa entre el número de líneas de código repetido y el tamaño del código fuente.
No hemos apreciado relación entre la densidad de la complejidad ciclomática y la densidad del código repetido.