object.title
Sonarqube, la meilleure solution de CodeQuality ?

Écrit par Thibault J. - TheExpert DevOps

SonarQube, un outil en OpenSource et de licence GNU GPLv3, ouvre la porte à de nombreuses possibilités de modifications, de création de vos propres plugins et bien plus.

Un outil qui inspecte votre code à la recherche d’anomalies et des vulnérabilités.

Il permet d’identifier les duplications des codes, de mesurer le niveau de documentation, et de détecter les bugs potentiels.
 
Grâce à cet outil, il est également possible d’effectuer des tests unitaires pour évaluer la couverture du code. De façon plus approfondie et complexe, il analyse les designs et l’architecture du code.
 
Sonarqube effectue une inspection continue du code dans toutes les branches des projets.

Il montre la santé d’une application et met en évidence des problèmes liés à l’introduction de nouvelles fonctions.

L’interface Web intuitive et complète de Sonarqube.

Sonarqube dispose d’une interface web permettant de visualiser les résultats des projets audités et analysés. L’interface est très complète et intuitive, Sonarqube évalue le code des différents projets pour donner un résultat détaillé et précis.

L’outil attribue des notes pour chaque critère : dès le démarrage de l’audit vous pouvez personnaliser les critères de qualité.
 
Cet outil s'adapte donc aux besoins d’une organisation dans n’importe quel contexte de production logiciel.

Déployer Sonarqube dans un conteneur Docker

Sonarqube se met en place facilement dans un environnement Docker avec un fichier docker-compose.yml, car il est composé de plusieurs services pour lui permettre de fonctionner correctement :

  • Une base de données de type Postgres, MySQL ou Oracle, qui va permettre d’enregistrer les audits.
  • Un serveur Sonarqube qui est composé de plusieurs services dont un serveur web et un module ElasticSearch pour gérer les recherches sur l’interface web.
  • Un serveur qu’on appelle Scanner qui comme son nom l’indique va récupérer le code de source du projet et l’auditer pour ensuite afficher le compte-rendu sur l’interface web.

On instancie le service sonarqube-server, on ouvre à l’extérieur du conteneur le port 9000 -> le port sur lequel est l’interface web de SonarQube.

Dans la partie environnement, on déclare plusieurs variables qui vont nous permettre de connecter le Sonarqube-server à la base de données dans ce cas postgres.

Enfin, les volumes qui vont permettre de stocker les configurations et les extensions.

services:
  sonarqube-server:
    image: sonarqube
    expose:
      - 9000
    ports:
      - "127.0.0.1:9000:9000"
    networks:
      - sonarnet
    environment:
      - SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
      - SONARQUBE_JDBC_USERNAME=sonar
      - SONARQUBE_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

Déployer Sonarqube et sa base de données est un jeu d’enfant avec un simple fichier docker-compose pour pouvoir déployer les différents services.

L’avantage d’utiliser les conteneurs Docker est (re)-déployer tout le système, grâce au docker-compose créé précédemment, au cas où les configurations ne sont pas bonnes ou mal initialisées.

Sonarqube dans son ensemble

Une fois l’outil Sonarqube déployé dans son ensemble, il sera composé du sonarqube-server et de sa base de données, et vous récupérerez le scanner disponible sur le github de Sonarqube.

Le fichier docker-compose, composé des deux services présentés auparavant, fera fonctionner Sonarqube, à l’exception du Sonar-scanner qui doit être téléchargé en ligne et lancé séparément.

version: "3"
 
services:
  sonarqube-server:
    image: sonarqube
    expose:
      - 9000
    ports:
      - "127.0.0.1:9000:9000"
    networks:
      - sonarnet
    environment:
      - SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
      - SONARQUBE_JDBC_USERNAME=sonar
      - SONARQUBE_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:

Une solution OpenSource de Code Quality, simple à déployer grâce à Docker

En conclusion, SonarQube est une solution qui peut-être déployée et configurée très simplement.

Grâce à cette facilité d’utilisation, cela permet de modifier très simplement la configuration de SonarQube et donc de s’adapter à l’environnement dans lequel l’outil est deployé.

Cela permet aussi de modifier à la volée la façon dont SonarQube analyse votre projet.

À lire ⤵