Invirtiendo en calidad: Análisis Estático con SonarQube

¿En algún momento de tu carrera profesional has tenido que trabajar con código legado, sin ningún tipo de testing implementado y al abrir cualquier clase del proyecto te has horrorizado? Se te han pasado por la cabeza frases como: “Es muy difícil incluir nueva funcionalidad en este proyecto”, “Ha pasado tanto desarrollador por ese proyecto que no se entiende nada” o “¿Cuánto me va a costar hacer cambios en este software?”. Bienvenido, este es tu artículo y vamos a descubrir cómo invertir en mejorar la deuda técnica y usar una de las herramientas de Análisis Estático más conocidas: SonarQube.

Actualmente, estoy en una empresa en la que trabajamos con muchos proyectos internos que debemos de mantener el propio equipo de desarrollo. Algunos de los proyectos se han externalizado a otras empresas y otros los han implementado desarrolladores que han pasado fugazmente por el equipo, sin ningún tipo de control de la calidad sobre el proyecto.

Por ello, hemos comenzado a invertir en el control de la calidad de los proyectos, en analizar el código para detectar grandes problemas, code smells, e incluir en nuestro procesos code reviews para mantener una calidad aceptable; un standard de codificación que nos permita que cualquier miembro del equipo pueda trabajar en el resto de proyectos sin dificultad.

Entre ciertas acciones que hemos implementado se encuentran incluir en nuestro workflow un analizador estático de código, en nuestro caso, hemos decidido usar SonarQube principalmente por recomendación de un compañero.

¿Que és SonarQube?

Entre sus funciones están la de dar métricas acerca de código duplicado, pruebas unitarias, cobertura del código, potenciales errores o estándares. Inicialmente, la herramienta estaba pensada para Java pero acepta extensiones para otros lenguajes. En nuestro caso, lo estamos usando para analizar proyectos desarrollados en Symfony. Además, se integra correctamente con herramientas de integración continua como Jenkins, por lo que podemos automatizar este análisis cada vez que un desarrollador sube código.

Análisis Estático de Código

¿Qué tipo de problemas podemos resolver?

  • Problemas de Diseño: Podemos detectar problemas en el diseño y arquitectura del software analizando las dependencias entre las clases del proyecto. Esto nos permite actuar a tiempo frente a crear un enmarañado de clases totalmente acopladas y difícilmente reutilizables.
  • Duplicidad de Código: Sonarqube nos proporciona métricas de código duplicado, pudiendo detectar partes de nuestro software se asemejan, pudiendo así tomar decisiones como desacoplar componentes o aplicar técnicas de refactoring utilizando el poliformismo, la herencia y la reutilización de componentes. Recuerda Don’t Repeat Yourself!
  • Detección de Vulnerabilidades: Sonarqube cuenta con una base de datos de codesmells y errores típicos de programación que detectan si alguna línea de código puede estar cometiendo algún problema que pueda vulnerar la seguridad. Por ejemplo, a la hora de cómo recoger los parámetros o cómo usarlos en nuestras consultas para evitar SQL Injection.
  • Standard de codificación: Avisándonos de partes del código que no cumplan con el PSR o incluyan malas prácticas a la hora de definir constantes, variables, llamadas a métodos estáticos.
  • Monitorización de Cobertura: En nuestro caso también lo usamos para poder monitorizar si la cobertura de los tests es aceptable y de esta manera tener una visión global del estado de la cobertura de todos los proyectos e invertir en incrementar el volumen de tests del proyecto.

Conclusión

Enlaces Interesantes

Extra Bonus:

Descargar Aquí: https://plugins.jetbrains.com/plugin/7973-sonarlint

Artículo publicado en: https://adrianalonso.es/buenas-practicas/analisis-estatico-con-sonarqube/

Full Stack Web Developer — adrianalonso.es

Full Stack Web Developer — adrianalonso.es