← Tous les articles
Ven. 31 juillet 2026 · 4 min de lecture

đŸ›Ąïž SonarQube : l'analyse statique qui garde ton code propre

SonarQube

📚 Introduction

La relecture de code attrape beaucoup de choses, mais pas tout. Un bug subtil, une injection SQL oubliĂ©e, une mĂ©thode de 300 lignes que personne n’ose toucher, une couverture de tests qui s’effrite commit aprĂšs commit : Ă  l’échelle d’un projet vivant, ça passe entre les mailles. L’analyse statique automatise cette vigilance — elle lit le code sans l’exĂ©cuter et remonte ce qui cloche.

SonarQube, Ă©ditĂ© par la sociĂ©tĂ© Sonar, est la rĂ©fĂ©rence du domaine. Il scanne le code, classe les problĂšmes (bugs, vulnĂ©rabilitĂ©s, code smells), mesure la couverture et la duplication, et surtout : il sait dire « non » quand du nouveau code dĂ©grade la qualitĂ©. On va voir comment le lancer, ce qu’est un quality gate, et comment le brancher dans une CI.

🔎 Sonar, SonarQube, SonarQube Cloud : qui est qui ?

Le nommage a changé fin 2024, autant le clarifier :

  • Sonar — l’entreprise Ă©ditrice.
  • SonarQube Server — la plateforme auto-hĂ©bergĂ©e (Ă©ditions payantes Developer, Enterprise, Data Center).
  • SonarQube Community Build — la version gratuite et open source (LGPL-3.0), auto-hĂ©bergĂ©e, qui s’appelait « Community Edition » jusqu’à fin 2024. C’est celle du homelab.
  • SonarQube Cloud — la version SaaS, anciennement SonarCloud.
  • SonarQube for IDE — l’extension d’éditeur, ex-SonarLint, qui remonte les problĂšmes pendant que tu codes.

🚀 Lancer SonarQube Community Build

Une commande Docker suffit pour un serveur local. Le port par défaut est le 9000 :

docker run -d --name sonarqube -p 9000:9000 sonarqube:community

L’interface s’ouvre sur http://localhost:9000 (identifiants par dĂ©faut admin / admin, Ă  changer immĂ©diatement). On crĂ©e ensuite un projet, on gĂ©nĂšre un token, et on lance l’analyse depuis le dĂ©pĂŽt avec le scanner officiel :

docker run --rm \
  -e SONAR_HOST_URL="http://localhost:9000" \
  -e SONAR_TOKEN="<ton-token>" \
  -v "$(pwd):/usr/src" \
  sonarsource/sonar-scanner-cli

Un petit fichier sonar-project.properties à la racine décrit le projet :

sonar.projectKey=mon-app
sonar.sources=src

🎯 Le quality gate et le « Clean as You Code »

C’est la fonctionnalitĂ© qui change tout. PlutĂŽt que de te noyer sous des milliers d’avertissements sur du code legacy, SonarQube applique le principe Clean as You Code : il concentre l’exigence sur le code nouveau ou modifiĂ©. Ta dette existante ne disparaĂźt pas, mais elle ne t’empĂȘche pas d’avancer — et le code que tu Ă©cris aujourd’hui, lui, doit ĂȘtre propre.

Le quality gate matĂ©rialise cette exigence : un ensemble de conditions sur le nouveau code (zĂ©ro nouveau bug, zĂ©ro vulnĂ©rabilitĂ©, couverture minimale, duplication maĂźtrisĂ©e). S’il passe au vert, tu merges. S’il passe au rouge, quelque chose s’est dĂ©gradĂ©. Les mĂ©triques suivies sont classiques mais complĂštes : bugs, vulnĂ©rabilitĂ©s, security hotspots, code smells, couverture de tests et duplication.

🧰 L’intĂ©grer dans la CI

Tout l’intĂ©rĂȘt est lĂ  : l’analyse tourne Ă  chaque push, et le quality gate peut faire Ă©chouer le pipeline. Avec GitLab CI, un job suffit :

sonarqube:
  image: sonarsource/sonar-scanner-cli:latest
  variables:
    SONAR_HOST_URL: '$SONAR_HOST_URL'
    SONAR_TOKEN: '$SONAR_TOKEN'
  script:
    - sonar-scanner

Le principe est le mĂȘme avec GitHub Actions. En amont, une bonne suite de tests — Pest cĂŽtĂ© PHP, par exemple — produit le rapport de couverture que SonarQube consomme pour vĂ©rifier que le nouveau code est bien testĂ©.

⚠ Quelques prĂ©cautions

  • Ne vise pas le « zĂ©ro problĂšme » sur tout le legacy. C’est dĂ©courageant et sans fin. Le quality gate sur le nouveau code (Clean as You Code) est la bonne stratĂ©gie : la qualitĂ© monte Ă  mesure que tu touches le code.
  • Les faux positifs existent. Une rĂšgle inadaptĂ©e Ă  ton contexte se dĂ©sactive ou s’ajuste dans le quality profile, plutĂŽt que de la subir ou d’ignorer tous les avertissements.
  • La version Community Build a ses limites. Elle n’analyse pas les branches ni les pull requests sĂ©parĂ©ment — c’est rĂ©servĂ© aux Ă©ditions payantes. Pour un projet perso, on scanne la branche principale ; en Ă©quipe, l’analyse de PR justifie souvent l’édition Developer ou SonarQube Cloud.
  • Ça consomme des ressources. SonarQube embarque une base de donnĂ©es et un moteur de recherche : prĂ©vois de la RAM sur ton serveur.

🎉 Conclusion

SonarQube, c’est un garde-fou automatique sur la qualitĂ© : il voit ce que la relecture laisse passer, et le quality gate transforme « on devrait nettoyer ça un jour » en une rĂšgle qui bloque la merge aujourd’hui. Commence simple — un docker run, un scan de ta branche principale, le quality gate par dĂ©faut — puis branche-le dans ta CI. Le code que tu Ă©cris Ă  partir de maintenant restera propre, sans grand mĂ©nage hĂ©roĂŻque.

🔗 Liens utiles

/faq

Questions fréquentes

Quelle est la différence entre SonarQube Server et SonarQube Cloud ?

+

SonarQube Server est la version auto-hébergée : tu l'installes sur ta propre infrastructure. SonarQube Cloud (l'ancien SonarCloud) est la version SaaS, hébergée par Sonar. Pour un usage gratuit et auto-hébergé, on utilise SonarQube Community Build, la version open source.

SonarQube est-il gratuit ?

+

Oui, dans sa version SonarQube Community Build : open source (licence LGPL-3.0), auto-hébergée, avec le support de plus de 40 langages. Les éditions payantes (Server Developer/Enterprise, et SonarQube Cloud) ajoutent l'analyse des branches et des pull requests, plus de langages et des rÚgles avancées.

Qu'est-ce qu'un quality gate ?

+

C'est un ensemble de conditions que le nouveau code doit remplir pour ĂȘtre acceptĂ© : pas de nouveau bug, pas de vulnĂ©rabilitĂ©, une couverture de tests suffisante, peu de duplication. Si une condition Ă©choue, le quality gate passe au rouge et peut faire Ă©chouer le pipeline.