Escrito por Thibault J. - TheExpert DevOps
SonarQube, una herramienta de código abierto con licencia GNU GPLv3, abre las puertas a numerosas posibilidades de modificación, creación de tus propios complementos y mucho más.
Una herramienta que analiza tu código en busca de anomalías y vulnerabilidades.
Permite identificar duplicados en el código, evaluar el nivel de documentación y detectar posibles errores.
Gracias a esta herramienta, también es posible realizar pruebas unitarias para evaluar la cobertura del código. De forma más exhaustiva y compleja, analiza los diseños y la arquitectura del código.
Sonarqube realiza una inspección continua del código en todas las ramas de los proyectos.
Muestra el estado de una aplicación y pone de relieve los problemas relacionados con la introducción de nuevas funciones.

La interfaz web intuitiva y completa de Sonarqube.
Sonarqube cuenta con una interfaz web que permite visualizar los resultados de los proyectos auditados y analizados. La interfaz es muy completa e intuitiva; Sonarqube evalúa el código de los distintos proyectos para ofrecer un resultado detallado y preciso.
La herramienta asigna puntuaciones para cada criterio: desde el inicio de la auditoría, puedes personalizar los criterios de calidad.
Por lo tanto, esta herramienta se adapta a las necesidades de una organización en cualquier contexto de producción de software.

Implementar Sonarqube en un contenedor Docker
Sonarqube se configura fácilmente en un entorno Docker mediante un archivo docker-compose.yml, ya que se compone de varios servicios que le permiten funcionar correctamente:
- Una base de datos del tipo Postgres, MySQL u Oracle, que permitirá registrar las auditorías.
- Un servidor Sonarqube compuesto por varios servicios, entre los que se incluyen un servidor web y un módulo de ElasticSearch para gestionar las búsquedas en la interfaz web.
- Un servidor llamado Scanner que, como su nombre indica, recuperará el código fuente del proyecto y lo analizará para, a continuación, mostrar el informe en la interfaz web.
Se inicia el servicio sonarqube-server y se abre el puerto 9000 fuera del contenedor, que es el puerto en el que se encuentra la interfaz web de SonarQube.
En la sección de entorno, se declaran varias variables que nos permitirán conectar el servidor Sonarqube a la base de datos, en este caso Postgres.
Por último, los volúmenes que permitirán almacenar las configuraciones y las extensiones.
servicios:
sonarqube-server:
imagen: sonarqube
expone:
- 9000
puertos:
- "127.0.0.1:9000:9000"
redes:
- sonarnet
entorno:
- SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
- SONARQUBE_JDBC_USERNAME=sonar
- SONARQUBE_JDBC_PASSWORD=sonar
volúmenes:
- sonarqube_conf:/opt/sonarqube/conf
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-pluginsImplementar Sonarqube y su base de datos es muy sencillo gracias a un simple archivo docker-compose que permite implementar los distintos servicios.
La ventaja de utilizar contenedores Docker es poder volver a implementar todo el sistema, gracias al archivo docker-compose creado anteriormente, en caso de que las configuraciones no sean correctas o se hayan inicializado mal.
Sonarqube en su conjunto
Una vez que la herramienta Sonarqube esté completamente implementada, estará compuesta por el servidor Sonarqube y su base de datos, y podrás descargar el escáner disponible en el repositorio de GitHub de Sonarqube.
El archivo docker-compose, compuesto por los dos servicios presentados anteriormente, hará funcionar Sonarqube, salvo el Sonar-scanner, que debe descargarse de Internet y ejecutarse por separado.
versión: "3"
servicios:
sonarqube-server:
imagen: sonarqube
expone:
- 9000
puertos:
- "127.0.0.1:9000:9000"
redes:
- sonarnet
entorno:
- SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
- SONARQUBE_JDBC_USERNAME=sonar
- SONARQUBE_JDBC_PASSWORD=sonar
volúmenes:
- sonarqube_conf:/opt/sonarqube/conf
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins
db:
image: postgres
networks:
- sonarnet
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
volumes:
- postgresql:/var/lib/postgresql
- postgresql_data:/var/lib/postgresql/data
redes:
sonarnet:
volúmenes:
sonarqube_conf:
sonarqube_data:
sonarqube_extensions:
sonarqube_bundled-plugins:
Una solución de código abierto para el control de calidad del código, fácil de implementar gracias a Docker
En conclusión, SonarQube es una solución que se puede implementar y configurar con gran facilidad.
Gracias a esta facilidad de uso, es muy sencillo modificar la configuración de SonarQube y, por lo tanto, adaptarla al entorno en el que se implementa la herramienta.
Esto también permite modificar sobre la marcha la forma en que SonarQube analiza tu proyecto.
Para leer ⤵
