SonarQube – Un primer vistazo

Vistazo Inicial

Este es el 7º año que llevo trabajando como Ingeniero de Calidad Software en Solid Gear y afortunadamente, puedo seguir trabajando en el mismo proyecto. Como todos los Ingenieros Software de Solid Gear, siempre queremos innovar y estar a la última y por fin, he tenido tiempo de poder trabajar con una herramienta que espero, permita al equipo mejorar en sus estándares de calidad de código: SonarQube.

Muchos no conoceréis qué es ni para qué sirve SonarQube, así que el propósito de esta entrada es dar respuesta a estas preguntas y ver cómo nos puede ayudar a mejorar la calidad de nuestro código.

¿Qué es SonarQube?

SonarQube es una plataforma de código abierto que se usa principalmente para realizar un análisis estático del código fuente. Además, cabe destacar que aunque inicialmente la herramienta estaba pensada para proyectos Java, se ha ampliado de forma que acepte extensiones para otros lenguajes.

 

Análisis Estático vs Análisis Dinámico

Antes de empezar, es aconsejable recordar qué es el análisis estático y el dinámico, de forma que sepamos qué vamos a analizar y para qué nos sirve.

El análisis estático de código es aquel que se realiza sin ejecutar el software, es decir, evaluando el código fuente, de forma que podamos obtener información y métricas para mejorar nuestro código detectando errores lo más temprano posible, algo que Scrum –la metodología base con la que Solid Gear trabaja- también aconseja.

Sin embargo, para el análisis dinámico necesitamos ejecutar el software para poder comprobar su comportamiento en tiempo de ejecución. Además, para el análisis dinámico necesitamos ser especialmente cautos y contar con los suficientes casos de prueba -que nos ayudarán a asegurar que una porción de código ha sido comprobada y observada- como para que el comportamiento que probamos sea lo suficientemente relevante como para dar nuestro OK al código.

SonarQube Código Abierto

Funcionalidades

El principal propósito de esta aplicación es que podáis invertir en controlar la calidad del código software, de forma que se empiece a analizar el código y ser capaces de detectar code smells y los grandes problemas lo antes posible para poner solución antes de desplegar nuestro código en producción y que llegue a nuestros clientes.

Vista Proyecto en SonarQube

Lo primero que necesitamos es instalar una instancia de SonarQube. Existen muchos manuales en línea así que será muy sencillo realizar una instalación limpia de la herramienta.

Una vez realizada la instalación, se pueden añadir tantos proyectos como se quieran para tener una visión global de todos ellos.

Vistazo Inicial de proyectos en SonarQube

 

Entre todas las funcionalidades que SonarQube nos brinda, podemos destacar la de proporcionar métricas con respecto a:

  • estándares de programación: cada lenguaje de programación tiene una serie de “buenas prácticas” que se deberían llevar a cabo a la hora de desarrollar, por lo que seguirlas tiene recompensa. Además, siguiendo estos estándares, todos los desarrolladores pueden codificar de una forma “entendible” por cualquiera de sus compañer@s.
  • vulnerabilidades: esta herramienta cuenta con una gran base de datos que incluyen errores típicos de programación base, code smells, seguridad (inyección SQL, exposición de datos sensibles, cross-site scripting,…). Si estás interesado en las vulnerabilidades más comunes, recomiendo ver e listado de la comunidad abierta OWASP (Proyecto Abierto de Seguridad en Aplicaciones Web) aquí.
  • cobertura: se puede monitorizar la cobertura de nuestras pruebas, de forma que comprobemos si es suficientemente buena para nuestros estándares de calidad. De esta forma, podemos invertir e incrementar el volumen de pruebas de nuestros proyectos.
  • código duplicado: la herramienta detecta partes de nuestro código que se asemejan mucho, de forma que podamos desacoplar componentes o refactorizar nuestro código, siguiendo ya de paso el simple principio DRY, “No te repitas”.

 

En mi opinión, una de las funcionalidades más potentes que posee SonarQube es la posibilidad de crear perfiles de calidad. SonarQube llama al perfil de calidad al conjunto de reglas que se pueden aplicar durante el análisis estático de nuestro código.

La herramienta nos proporciona ya directamente un perfil de calidad por defecto por cada lenguaje de programación que soporta (C#, Java, JavaScript, Flex, PHP, Python, Ruby, XML,…), de forma que siempre podemos usar los que vienen por defecto.

Perfiles de Calidad en SonarQube

No obstante, también nos proporciona la habilidad de crear vuestros propios perfiles personalizado con las reglas que vosotros, como Ingenieros de Calidad Software, consideréis oportunas incluir a la hora de analizar el código estático del proyecto.

Perfil de Calidad Personalizado en SonarQube

 

Además, esta herramienta nos brinda también la posibilidad de integrarlo con sistemas de Integración Continua, como Jenkins, de forma que cada vez que incluyas nuevos cambios en tu rama estable, se ejecute automáticamente el análisis estático de todo tu código, y comprobar si los nuevos cambios han repercutido en algunas de las métricas explicadas anteriormente, pero dejaremos el tema de integración continua para otra entrada.

¿Te animas a probarlo y a contarnos qué te ha parecido y si lo ves de utilidad?

Deja un comentario

Responsable » Solidgear.
Finalidad » Gestionar los comentarios.
Legitimación » Tu consentimiento.
Destinatarios » Los datos que me facilitas estarán ubicados en los servidores SolidgearGroup dentro de la UE.
Derechos » Podrás ejercer tus derechos, entre otros, a acceder, rectificar, limitar y suprimir tus datos.

Envíando este formulario aceptas la política de privacidad.

¿Necesitas una estimación?

Calcula ahora