“Calidad significa hacer lo correcto cuando nadie está mirando”.
Henry Ford
En la industria de software, uno de los factores más importantes a tener en cuenta es la calidad del código, por lo que es necesario conocer y disponer de herramientas que brinden retroalimentación del estado de nuestro código y la forma en que podríamos mejorarlo, es allí donde SonarQube (o SonarCloud) cumple un rol protagónico dentro del proceso de desarrollo de software, específicamente en integración continua.
“El análisis estático corresponde al proceso de evaluar un software sin ejecutarlo”
(Ortega, 2020)
SonarQube es una herramienta que permite realizar un análisis estático de código. Lo que hace es identificar los puntos susceptibles de mejora, que facilitarán la obtención de métricas necesarias para la optimización del código.
La principal diferencia entre SonarQube y SonarCloud, es que para el primero es necesario una instalación previa, mientras que el segundo es una versión en la nube. Ambos son operados por la compañía SonarSource.
Una de las ventajas de SonarQube es que soporta más de 20 lenguajes de programación, y cada uno de ellos cuenta con una serie de reglas que permiten detectar problemas generales o específicos de un lenguaje particular.
Ilustración 1. Algunos lenguajes de programación soportados por sonarqube (Márquez, 2019)
Quality Gate
Ilustración 2. Imagen ilustrativa acerca de los posibles estados de un Quality Gate (Márquez, 2019)
Son una serie de condiciones (reglas) que el proyecto analizado debe cumplir para poder pasar a una siguiente etapa, allí básicamente se busca responder a la pregunta: ¿Puede este código seguir avanzando en el ciclo de desarrollo? (Moreno, 2020).
Hacen referencia tanto a puntos de fallo reales o potenciales en el software, como a puntos débiles de seguridad que pueden ser usados como foco de un ataque.
Ilustración 3. Code smells según Martin Fowler.
Es un indicativo de que quizás no estamos escribiendo código de la mejor manera, lo que puede ocasionar algún problema en el futuro y un problema de trasfondo, normalmente problemas de mantenibilidad del código. Lo anterior no quiere decir que el código contenga errores o bugs, pero sí puede aumentar el riesgo a errores o fallos (Díaz, 2019).
El concepto de code smells está muy asociado con la deuda técnica, esta hace referencia a la cantidad de tiempo que tardaríamos en mejorar algunos detalles identificados por SonarQube.
La cobertura de código es una medida que permite conocer el porcentaje de código que ha sido probado o validado por tests. Usualmente se desea obtener una mayor cobertura para tener menos probabilidad de introducir errores en el código.
Entre las principales bondades que tiene una herramienta de análisis de código estático como SonarQube, se destaca la capacidad de identificar aspectos tales como: código duplicado, código muerto, estándares de codificación, complejidad ciclomática, comentarios, test unitarios y test de integración.
Personalmente considero que este tipo de herramientas nos guían poco a poco hacia una mejor manera de escribir código y desarrollar software, siendo conscientes de las cosas que estamos haciendo bien, pero especialmente de las cosas que estábamos haciendo mal.
La calidad del software y por lo tanto, la calidad del código, está tomando más relevancia en el ámbito del desarrollo de software, ya no basta con sólo desarrollar una aplicación o programa que sea funcionalmente aceptable, es necesario garantizar que estamos desarrollando de la manera correcta y aplicando buenas prácticas, de tal forma que la probabilidad a fallos o errores en nuestro aplicación tienda a cero. Hemos visto lo importante que puede ser la adopción de una herramienta como SonarQube o SonarCloud en nuestra cultura de desarrollo, y realmente su implementación no es nada complicada, tenemos las herramientas a nuestro alcance, ya depende de nosotros si decidimos tomarlas y desarrollar software de calidad, o simplemente quedarnos en nuestra zona de confort.
Díaz, C. (2019, septiembre 17). Code smells y deuda técnica. Recuperado de https://openwebinars.net/blog/code-smells-y-deuda-tecnica/
Márquez, R. (2019, noviembre 1). Evalúa la calidad de tu código con Sonarqube. Recuperado de https://www.paradigmadigital.com/dev/evalua-la-calidad-de-tu-codigo-con-sonarqube/
Moreno, O. (2020, enero 28). Quality Gates de SonarQube, fomentando DevOps. Recuperado de http://oscarmoreno.com/quality-gates-sonarqube/
Ortega, M. (2020, enero 15). Que es SonarQube y cómo nos ayuda para medir la calidad de nuestro código. Recuperado de https://medium.com/@mortegac/que-es-sonarqube-y-como-nos-ayuda-para-medir-la-calidad-de-nuestro-c%C3%B3digo-c78a383bbf9e
Vega, A. A. (2018, junio 20). Invirtiendo en calidad: Análisis Estático con SonarQube. Recuperado de https://medium.com/@alonsus91/invirtiendo-en-calidad-an%C3%A1lisis-est%C3%A1tico-con-sonarqube-cb2ea1f383b9
Si te gustó este post, al hacerlo, recibirás un kit de bienvenida, tendrás acceso a nuestras líneas de aprendizaje, recibirás invitaciones a nuestros eventos y te enviaremos nuestro newsletter mensual con contenido relevante sobre agilidad, Inteligencia Artificial, UX/UI y desarrollo. Únete aquí: https://bit.ly/CastorComunidad