5.7 KiB
title: SonarQube created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, development, code-quality, linter, securite, ci] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Development, https://github.com/SonarSource/sonarqube]
💻 SonarQube
Plateforme d'analyse qualité et sécurité du code source : détecte bugs, vulnérabilités, code smells et mesure la couverture de tests pour 30+ langages.
📋 Informations Générales
| Champ | Valeur |
|---|---|
| Site web | sonarsource.com/products/sonarqube |
| GitHub | SonarSource/sonarqube |
| License | LGPL-3.0 (Community Edition) |
| Langage | Java |
| Étoiles GitHub | 10 634 ⭐ |
| Catégorie | cat-development |
| Note | ⚠️ Community Edition (gratuite) a des features limitées vs Developer/Enterprise Edition : moins de langages supportés, pas d'analyse de branches/PR, pas de règles SAST avancées. |
📝 Description
SonarQube est l'outil de référence pour l'analyse statique de code (Static Analysis). Il inspecte votre code sans l'exécuter, détecte :
- Bugs : erreurs logiques potentielles, null pointer, resource leaks
- Vulnérabilités : injections SQL, XSS, secrets hardcodés (équivalent SAST de base)
- Code smells : duplication, complexité cyclomatique, code mort
- Coverage : taux de couverture des tests
- Hotspots de sécurité : code à revue manuelle
Langages supportés (Community) : Java, JavaScript, TypeScript, C#, Python, Go, Kotlin, Ruby, PHP, HTML/CSS, etc. (la Developer Edition ajoute ABAP, C/C++, Objective-C, PL/SQL, T-SQL, Swift…)
Intégrations natives : GitHub, GitLab, Bitbucket, Azure DevOps, Maven, Gradle, npm, app-woodpecker-ci / Jenkins, etc.
Différence SonarQube vs linters classiques (ESLint, Pylint…) : SonarQube propose une vue centralisée (tableau de bord par projet, dette technique, historique), tandis qu'un linter local n'agit qu'au moment du git commit.
Modèle d'usage typique :
- Analyse locale (
sonar-scannerCLI) ou via CI - Push des résultats vers le serveur SonarQube
- Quality Gate : bloque la PR si le score est trop bas
- Dashboard web : l'équipe voit la dette technique au fil du temps
🚀 Installation
Via Docker Compose
# docker-compose.yml
version: '3.8'
services:
sonarqube:
image: sonarqube:community
container_name: sonarqube
restart: unless-stopped
depends_on:
- db
environment:
- SONAR_JDBC_URL=jdbc:postgresql://db:5432/sonarqube
- SONAR_JDBC_USERNAME=sonar
- SONAR_JDBC_PASSWORD=*** volumes:
- sonarqube-data:/opt/sonarqube/data
- sonarqube-logs:/opt/sonarqube/logs
- sonarqube-extensions:/opt/sonarqube/extensions
labels:
- "traefik.enable=true"
- "traefik.http.routers.sonarqube.rule=Host(`sonar.example.com`)"
- "traefik.http.routers.sonarqube.entrypoints=websecure"
- "traefik.http.services.sonarqube.loadbalancer.server.port=9000"
networks:
- proxy
db:
image: postgres:15
container_name: sonarqube-db
restart: unless-stopped
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=*** - POSTGRES_DB=sonarqube
volumes:
- sonarqube-db:/var/lib/postgresql/data
networks:
- proxy
volumes:
sonarqube-data:
sonarqube-logs:
sonarqube-extensions:
sonarqube-db:
networks:
proxy:
external: true
⚠️ Ajuster vm.max_map_count sur l'hôte : sysctl -w vm.max_map_count=524288 (Elasticsearch embarqué).
Scanner local (sans CI)
# Installer sonar-scanner
brew install sonar-scanner # ou via Docker
# Lancer l'analyse
sonar-scanner \
-Dsonar.projectKey=mon-projet \
-Dsonar.sources=./src \
-Dsonar.host.url=https://sonar.example.com \
-Dsonar.login=squ_xxxx
⚙️ Configuration
- Premier démarrage : login
admin / admin, changer le mot de passe - Créer un projet + générer un token d'authentification
- Quality Gate : par défaut
Sonar way(à durcir selon vos exigences) - Branches & PRs : nécessite Developer Edition+ (CE = analyse de
mainuniquement) - Notifications : webhook Slack/Teams/email sur changement de qualité
🔗 Alternatives
- SonarCloud — Version SaaS de SonarSource (gratuit pour projets open source)
- CodeQL (GitHub) — SAST gratuit pour projets publics
- Snyk Code — Analyse de sécurité (commercial avec free tier)
- Semgrep — SAST moderne, open source, plus simple
- CodeClimate — Qualité + coverage, freemium
- Codecov / Coveralls — Spécialisés coverage only
🔒 Sécurité
- Pas d'exposition HTTP en clair : toujours derrière HTTPS
- Auth externe recommandée : OIDC (Authentik, Keycloak) ou SAML
- Tokens d'analyse : à stocker en secret CI, pas en clair
- RBAC : groupes (admin, developer, viewer)
- Webhook secrets : signer les callbacks sortants
- Logs : auditer qui a modifié la config des Quality Gates
📚 Ressources
🔗 Pages Liées
- cat-development — Catégorie Development
- app-woodpecker-ci — Intégration CI/CD
- app-gitlab — Intégration native GitLab
- app-traefik — Reverse proxy HTTPS
- securisation-home-lab — Bonnes pratiques
- recettes-docker-compose — Templates Docker