SonarQube
SonarQube es una herramienta de análisis de código que ayuda a detectar problemas de codificación en múltiples lenguajes de programación. Se utiliza ampliamente en las etapas de pipeline para garantizar una alta calidad del código, incluyendo mantenibilidad, fiabilidad, problemas de seguridad y más.
Puede integrarse con diversas herramientas como GitHub Actions, GitLab, Bitbucket, Jenkins y otras.
La idea es crear un estándar de calidad que el código debe cumplir antes de ser fusionado, intentando respetar los principios del código limpio. SonarQube clasifica el código mediante métricas, pero también podemos añadir reglas personalizadas.
Podemos utilizar SonarQube en la automatización de pull requests para ahorrar tiempo a los revisores rechazando código que no cumple los estándares de calidad y optimizando el flujo de trabajo del equipo.
Además, SonarQube proporciona sugerencias de mejora del código y análisis estático de seguridad de aplicaciones en primera etapa.
Existe un plugin llamado SonarLint que puede integrarse con tu IDE para proporcionar retroalimentación en tiempo real sobre la calidad del código antes de pasar por el análisis de SonarQube. Podemos utilizar esta herramienta para evitar ejecutar un pipeline solo para descubrir después que el código no es tan bueno como debería.
Para VS Code, tenemos la extensión SonarLint. Se requiere Java Runtime versión 17.
Existen 4 versiones diferentes, siendo solo la edición Community gratuita.
Aunque despliegues la herramienta en tu propia infraestructura, no te exime de pagar las licencias de otras versiones.
También tenemos SonarQube Cloud gratuito si no deseas desplegarlo en tu infraestructura.
Cloud vs Autoalojado
-
Ventajas de SonarCloud Gratuito
- Configuración Sencilla
- Actualizaciones Automáticas
- Escalabilidad
- Integración con repositorios como GitHub, GitLab, Bitbucket y Azure DevOps, lo que facilita la configuración de pipelines CI/CD.
-
Ventajas de Utilizar Tu Propia Infraestructura con SonarQube
- Control Total: Cuando alojas SonarQube en tu propia infraestructura, tienes control completo sobre la configuración, seguridad, acceso y personalización. Esto es crucial para empresas con requisitos específicos de cumplimiento y seguridad.
- Privacidad y Seguridad de Datos
- Integración con Herramientas Internas: Puede ser más fácil integrar SonarQube con otras herramientas y sistemas internos de la empresa, como sistemas de autenticación corporativa (LDAP/AD), paneles internos y herramientas de monitorización.
- Soporte para Instalaciones Personalizadas: Si necesitas configuraciones avanzadas o características específicas disponibles solo en ediciones de pago de SonarQube (Developer, Enterprise, Data Center), desplegar en tu propia infraestructura puede ser más adecuado.
- Personalización y Extensibilidad: SonarQube permite desarrollar plugins personalizados o utilizar plugins de terceros para ampliar su funcionalidad. Esto puede estar limitado en SonarCloud.
- Requisitos: 2 núcleos y 4GB de RAM en entornos más pequeños con 30GB de espacio libre en disco. Entornos más grandes: 8 núcleos y 16GB de RAM. Se requiere Java 17 runtime, ya sea JRE u OpenJDK. Se recomienda encarecidamente el uso de SSD; por el contrario, utilizar discos montados en red empeorará significativamente el rendimiento.
Si la herramienta no es adoptada por la empresa y aún así quieres utilizarla, puedes ejecutarla en tu máquina para mejorar tu desarrollo personal utilizando contenedores. De esta manera, evitamos tener que instalar los requisitos necesarios y podemos levantarla y destruirla en cualquier momento utilizando la licencia Community.
Esta práctica también es interesante para configuraciones de pipeline levantando un contenedor, analizando el código y destruyéndolo inmediatamente después.