Volver

¿Es Sonarqube la mejor solución de CodeQuality?

Imagen del slider

6 de abril de 2021

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-plugins

Implementar 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 ⤵