Cada vez son más las personas concienciadas de la importancia de la calidad del código. Pese a ello, todavía encontramos casos en los que se conforman con tener código que funcione, que compile o que tenga contento al cliente, sin darle importancia a la calidad del mismo.

Existen muchas herramientas que nos pueden ayudar a medir esa calidad, y en este caso vamos a centrarnos en Sonarqube y muchas de las características que nos ofrece.

La calidad del código

Antes de adentrarnos en esta herramienta, vamos a estudiar varios puntos que nos ayudarán a medir la calidad de nuestro código y veremos la importancia que tiene cada uno.

Todos ellos son evaluados por Sonarqube que, tras llevar a cabo un análisis, nos muestra de una forma muy atractiva cada una de sus métricas.

Código duplicado

Este término se utiliza cuando hablamos de un código fuente que aparece más de una vez, ya sea dentro de uno o diferentes programas, de propiedad o mantenido, por la misma entidad.

La duplicación de código es generalmente considerada una señal de estilo de programación pobre, ya que un buen desarrollo está más asociado a la reutilización del mismo.

La principal desventaja es el mantenimiento del código, lo cual se convierte en una tarea mucho más costosa.

Código muerto

Es el código que se encuentra en nuestra aplicación, pero nunca es utilizado. Normalmente aparece después de hacer refactor en nuestro código.

Estándares de codificación

Se refiere a convenciones para escribir código fuente, las cuales frecuentemente son dependientes del lenguaje de programación.

Las convenciones más comunes hacen referencia a: nombres de variables, indentaciones, espaciado...

Bugs

Un bug es un error o un defecto en el software que hace que un programa funcione de forma incorrecta.

Complejidad ciclomática

Es una métrica de calidad software basada en el cálculo del número de caminos independientes que tiene nuestro código.

Cuanto más compleja sea la lógica de un código, más difícil será de entender, mantener y probar.

Comentarios

Los comentarios son añadidos usualmente con el propósito de hacer el código fuente más fácil de entender con vistas a su mantenimiento o reutilización.

Una mala o escasa documentación puede convertir el mantenimiento del código en una tarea muy costosa.

Al igual que ocurre con los tests, un gran porcentaje de comentarios no asegura calidad. Los comentarios deben ser buenos y aclaratorios explicando interfaces públicas, pero no lógica ni diseño.

Tests unitarios y de integración

Son una forma de comprobar el correcto funcionamiento de una unidad de código y de la integración de mismos.

Facilitan los cambios en la aplicación, ya que las pruebas nos aseguran que los nuevos cambios no han introducido errores en partes de código desarrolladas anteriormente y que están cubiertas por estos.

Por otro lado, documentan el código, siendo un libro abierto sobre el funcionamiento del código.

Cobertura de código

La cobertura de código es una medida que nos indica el porcentaje de código validado por los tests. Generalmente con una mayor cobertura aseguramos que no se introducen errores en una mayor parte del código, pero esto dependerá de la funcionalidad real que cubran los tests.

Sonarqube

Es una plataforma de software libre para evaluar la calidad de nuestro código fuente, realizando un análisis estático sobre dicho código, con el objetivo de advertirnos sobre diferentes puntos a mejorar.

Se denomina análisis estático del código al proceso de evaluar el software sin ejecutarlo. Pese a esto, es importante aclarar que si queremos comprobar la cobertura de los tests, estos sí deben ser ejecutados.

Lenguajes soportados

Podemos analizar más de 20 lenguajes de programación. Cada analizador proporciona numerosas reglas para detectar problemas de calidad generales y específicos del lenguaje.

Checkstyle, PMD y Findbugs

Sonarqube usa diversas herramientas de análisis estático como Checkstyle, PMD o FindBugs para obtener métricas que pueden ayudar a mejorar la calidad, a través de las reglas que estas definen.

Issues y Reglas

Cuando un componente no cumple con una regla de codificación de las definidas por Checkstyle, PMD, Findbugs..., se registra una issue.

Hay 3 tipos de issues:

Quality Profile

Son colecciones de reglas que se revisan durante un análisis. Para cada tecnología hay un Quality Profile predeterminado, pero podemos tener varios para un mismo lenguaje.

En caso de que un proyecto analizado no tenga asignado explícitamente uno, se analizará con el perfil configurado como predeterminado para dicho lenguaje.

Quality Gate

Es el conjunto de condiciones que el proyecto debe cumplir antes de que pueda ser lanzado a producción. Al igual que ocurre con los quality profiles, es posible establecer un Quality Gate predeterminado.

Nota: siempre que se pueda está bien tener un mismo quality gate y quality profile para todos los proyectos de la empresa. Esto nos garantiza un estándar de calidad dentro de la compañía y también hace más liviano la movilidad de los desarrolladores entre proyectos.

Vista del proyecto

Cada proyecto dispondrá de una pantalla con el resumen del mismo, la cual se actualizará después de cada análisis. Desde esta vista podemos información referente a: bugs, vulnerabilidades, code smells, cobertura, duplicidad, ejecuciones quality profile y quality gate asignado.

Vista de issues

Desde esta vista podemos gestionar y obtener más detalles de las issues pendientes. Pulsando en cada una de ellas podemos ver la línea exacta donde que genera la issue, una breve descripción de la misma e incluso se nos ofrecerá una posible solución para solventarla.

Vista de actividad

Desde aquí podemos ver un historial de ejecuciones y sus resultados. Este apartado es muy útil para sacar métricas y poder ir observando cómo van mejorando ciertos aspectos como: número de issues, cobertura de código, código duplicado...

Una vez conocidas las principales carácteristicas que miden la calidad de código, y después de haber indagado en Sonarqube, solo os queda seguir investigando sobre esta herramienta e introducirla como una nueva fase en el flujo de integración continua de vuestro proyecto.

Como comentaba al inicio del post, cada vez son más las personas y clientes concienciados de la importancia de la calidad del código, pero hay que seguir luchando para que sean muchos más y desde Paradigma os animamos a ello.

"Calidad significa hacer lo correcto cuando nadie está mirando", Henry Ford.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.