Aller au contenu principal

SonarQube — analyse de code

SonarQube est une plateforme d'analyse statique de code : qualité, bugs, vulnérabilités, dette technique et couverture de tests, avec un tableau de bord centralisé. Il s'intègre typiquement dans un pipeline CI (Jenkins, GitLab CI) via le sonar-scanner, qui envoie les résultats d'analyse au serveur.

Installation

# Nécessite un JDK 17+ et une base PostgreSQL dédiée
sudo apt install openjdk-17-jre-headless

# Téléchargement du serveur
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-<version>.zip
unzip sonarqube-<version>.zip -d /opt/sonarqube

# Le service n'est pas packagé nativement : créer un unit file dédié (voir exemple)

Fichiers de configuration

CheminRôle
/opt/sonarqube/conf/sonar.propertiesConfiguration principale (base de données, port, ES)
/opt/sonarqube/logs/Logs applicatifs

Commandes utiles

systemctl status sonarqube
journalctl -u sonarqube -f

# Depuis un projet, lancer une analyse
sonar-scanner -Dsonar.projectKey=mon-projet -Dsonar.host.url=http://localhost:9000 -Dsonar.login=<token>

Exemple de configuration

# /opt/sonarqube/conf/sonar.properties
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube
sonar.jdbc.username=sonar
sonar.jdbc.password=<mot de passe>
sonar.web.port=9000

Unit file minimal :

# /etc/systemd/system/sonarqube.service
[Unit]
Description=SonarQube
After=network.target postgresql.service

[Service]
Type=forking
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
User=sonarqube
Restart=always

[Install]
WantedBy=multi-user.target

Sécurisation

  • Changer immédiatement le mot de passe admin par défaut (admin/admin).
  • Placer l'interface web derrière un reverse proxy avec TLS, ne pas l'exposer nue.
  • Utiliser des tokens dédiés par projet/CI pour l'authentification du scanner plutôt qu'un compte utilisateur.
  • Restreindre l'accès réseau à la base PostgreSQL dédiée à l'hôte local ou au réseau interne.
  • SonarQube requiert des réglages kernel spécifiques (vm.max_map_count) à cause d'Elasticsearch embarqué — les appliquer sans sur-ouvrir le système.

Logs & dépannage

tail -f /opt/sonarqube/logs/sonar.log /opt/sonarqube/logs/web.log /opt/sonarqube/logs/es.log

Un échec de démarrage fréquent vient de vm.max_map_count trop bas (sysctl -w vm.max_map_count=524288) — SonarQube embarque Elasticsearch en interne.

Voir aussi