· Tutoriales  · 4 min read

Mejora como desarrollador con SonarQube

🤔 ¿Qué es SonarQube?

SonarQube es una plataforma de código abierto para la inspección continua de la calidad del código para realizar revisiones automáticas con análisis estático de código para detectar bugs, olores de código y vulnerabilidades de seguridad en 15 lenguajes de programación en la versión de código abierto.

También ofrece informes sobre código duplicado, estándares de codificación, pruebas unitarias, cobertura de código, complejidad del código, comentarios, bugs y vulnerabilidades de seguridad.

Cómo ejecutar y usar SonarQube

🐋 Hazlo con Docker

SonarQube es una plataforma completa que necesita ser instalada y configurada con un DBMS como Postgres, para hacer esto usaremos las utilidades Docker y docker-compose.

Depende de tu sistema operativo el proceso de instalación puede cambiar, así que esta es la URL de la página oficial con instrucciones para instalarlo: Instrucciones de Instalación de Docker

Ahora, con nuestras herramientas instaladas, procederemos a escribir un archivo llamado docker-compose.yml dentro de un directorio que contendrá los datos de SonarQube y la base de datos.

version: '3'

services:
  sonarqube:
    image: sonarqube
    expose:
      - 9000
    ports:
      - '127.0.0.1:9000:9000'
    networks:
      - sonarnet
    environment:
      - sonar.jdbc.url=jdbc:postgresql://db:5432/sonar
      - sonar.jdbc.username=sonar
      - sonar.jdbc.password=sonar
    volumes:
      - 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

networks:
  sonarnet:

volumes:
  sonarqube_conf:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_bundled-plugins:
  postgresql:
  postgresql_data:

Y dentro del directorio, necesitamos ejecutar

docker-compose up

Esto descarga las imágenes de SonarQube y Postgres, genera y configura ambos contenedores.

Esto deja los logs de esos contenedores ejecutándose en la terminal, si no quieres esto simplemente agrega la bandera -d al comando.

docker-compose up -d
❌ En caso de errores

Si obtienes este error al ejecutar el comando

ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch. bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]`

Necesitas ejecutar

sudo sysctl -w vm.max_map_count=262144

🌐 SonarQube

Abre el navegador web y ve a localhost:9000

  • usuario: admin
  • contraseña: admin

Puede pedir cambiar la contraseña predeterminada, y luego obtienes un panel como este

Interfaz de SonarQube

⚙️ Configurar un proyecto

En la esquina superior derecha, puedes ver un botón azul Add Project, haz clic en él y selecciona la única opción en la versión de código abierto “Manually”

Agregar proyecto

Ahora, necesitamos agregar

  • Clave del proyecto (cadena de ID única)
  • Nombre para mostrar (¯_(ツ)_/¯)

Ahora haz clic en el botón Set up, y necesitamos proporcionar un token. Es el identificador que tendremos ante la plataforma. Debemos mantenerlo privado, si se ve comprometido, puedes revocarlo desde la configuración de la cuenta.

Debemos seleccionar el lenguaje o stack de nuestro proyecto, Maven (Java), Gradle (Java), y .NET/Net core(C#, F#, VB) tienen su propia forma de ejecutar el análisis. Todos los demás lenguajes soportados necesitan la aplicación CLI sonnar-scanner para funcionar, puedes ver enlaces directos a toda la documentación necesaria en el mismo asistente dependiendo de tu SO.

Seleccionar el stack

Siguiendo las instrucciones del asistente solo queda esperar los resultados y verificar la calidad de tu código, y ver dónde estás cometiendo errores y cómo resolver todo esto con ejemplos y tiempo estimado de esfuerzo para resolver los problemas.

Panel del proyecto Pestaña de problemas

Cuando corrijas cualquiera de estos errores haz un commit y ejecuta nuevamente el comando para escanear el proyecto (el mismo que la primera vez) puedes obtener gráficos y estadísticas de tu progreso resolviendo los problemas

sonar-scanner \
  -Dsonar.projectKey=<nombre del proyecto> \
  -Dsonar.sources=. \
  -Dsonar.host.url=http://localhost:9000 \
  -Dsonar.login=<token>

🐰🥕 Eso es todo amigos

Con esto, podrás verificar la calidad de tu código y rastrear tu progreso resolviendo los problemas, en otra publicación te mostraré cómo desplegar esto en un servidor real con tu dominio, para usar remotamente en tus proyectos personales o empresariales.

🙋 Ponte en contacto

Si requieres información complementaria o sugerencias estaré feliz de leerlas, puedes enviarme un correo a [email protected]

Volver al Blog