Introducción sonarQube

David

En el mundo del desarrollo de software, escribir código no es suficiente. La calidad del código es clave para evitar problemas a futuro, mejorar el rendimiento y garantizar la seguridad de nuestras aplicaciones.

SonarQube: El Guardián de tu Código

Si alguna vez has trabajado en un proyecto grande, sabes lo fácil que es que el código se vuelva un desastre: errores ocultos, código repetitivo, problemas de seguridad… Y claro, nadie quiere enterarse de estos fallos cuando la aplicación ya está en producción.

Ahí es donde entra SonarQube. Básicamente, es como un detector de vulnerabilidades en el código. Lo analiza línea por línea y te avisa si hay errores, vulnerabilidades o cosas que podrías mejorar. Lo mejor es que funciona automáticamente y se integra con herramientas de desarrollo para que no tengas que revisar todo manualmente.

Tipos de revisión y pruebas

Revisión automática

Las pruebas automatizadas consisten en la aplicación de herramientas de software para automatizar el proceso manual de revisión y validación de un producto de software que lleva a cabo una persona. Ahora, la mayoría de los proyectos de software ágiles y de DevOps modernos incluyen pruebas automatizadas desde el principio.

Revisión por pares

La revisión por pares (peer review, en inglés) puede explicarse, en una primera aproximación, como la revisión del código realizada por otro miembro del equipo diferente al autor original del código, y cuyo objetivo principal es la búsqueda de defectos y la propuesta y evaluación de soluciones alternativas o de mejoras en el diseño y los algoritmos utilizados. Además, la revisión por pares sirve como facilitador para la difusión del conocimiento a través del equipo y, en su caso, de la organización.

Pruebas de usabilidad: valida qué tan bien un cliente puede usar un sistema o una aplicación web para completar una tarea.

Prueba de aceptación: verifica si todo el sistema funciona según lo previsto.

Pruebas de integración: asegura que los componentes o funciones del software operen juntos.

Pruebas de unidad: valida que cada unidad de software funcione según lo esperado. Una unidad es el componente de prueba más pequeño de una aplicación.

Pruebas funcionales: verifica funciones mediante la emulación de escenarios de negocio, en función de los requisitos funcionales. La prueba de caja negra es una forma común de verificar funciones.

Pruebas de rendimiento: prueba cómo funciona el software bajo diferentes cargas de trabajo. Las pruebas de carga, por ejemplo, se utilizan para evaluar el rendimiento en condiciones de carga reales.

Pruebas de estrés: prueba cuánta tensión puede soportar el sistema antes de que falle. Considerado como un tipo de prueba no funcional.

Analisis Sast

Todos quisiéramos producir código seguro, mantenible y libre de bugs. Pero esto puede ser difícil de lograr, pues sin darnos cuenta se nos puede escapar una mala práctica porque no verificamos correctamente el input de algún usuario y esto puede ocasionar una vulnerabilidad en nuestra aplicación.

Por esto mismo, podemos aplicar SAST -Static Application Security Testing– o pruebas estáticas de seguridad de aplicaciones. Esto es una práctica que se enfoca en analizar el código fuente de las aplicaciones y no en la ejecución real del código (análisis dinámico).

Métricas

Bugs: error que romperá tu código y debe corregirse de inmediato.

Code Smells: problema de mantenibilidad que hace que tu código sea confuso y difícil de mantener.

Vulnerabilities: punto en su código que está abierto a ataques.

Coverage: esto le indica qué porcentaje de su código está cubierto por sus tests unitarios.

Duplications: número de bloques de líneas duplicados.



Quality gate y Quality profile

Un Quality Gate en SonarQube es como un filtro de calidad que tu código debe pasar antes de ser aprobado. Básicamente, es un conjunto de reglas que determinan si el código es lo suficientemente bueno o si necesita mejoras antes de seguir adelante. Si el código no cumple con los estándares definidos, el Quality Gate lo bloquea y te dice qué cosas debes corregir. Es una forma rápida de saber si el código está listo para producción o si hay problemas que debes solucionar primero.

Por otro lado, un Quality Profile es como el manual de reglas que SonarQube usa para analizar tu código. Define qué tipos de problemas debe buscar, desde errores de sintaxis hasta vulnerabilidades de seguridad o problemas de mantenimiento. Puedes personalizarlo según el lenguaje de programación y los estándares de tu equipo.


David Guzmán López

Ingeniero Electrónico

Electronic Engineer | DevOps Engineer | SRE | Cloud Engineer | Infrastructure Engineer