--- 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](https://www.sonarsource.com/products/sonarqube/) | | **GitHub** | [SonarSource/sonarqube](https://github.com/SonarSource/sonarqube) | | **License** | LGPL-3.0 (Community Edition) | | **Langage** | Java | | **Étoiles GitHub** | 10 634 ⭐ | | **Catégorie** | [[cat-development\|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** : 1. **Analyse locale** (`sonar-scanner` CLI) ou via CI 2. **Push des résultats** vers le serveur SonarQube 3. **Quality Gate** : bloque la PR si le score est trop bas 4. **Dashboard web** : l'équipe voit la dette technique au fil du temps ## 🚀 Installation ### Via Docker Compose ```yaml # 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) ```bash # 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 1. **Premier démarrage** : login `admin / admin`, changer le mot de passe 2. **Créer un projet** + générer un *token* d'authentification 3. **Quality Gate** : par défaut `Sonar way` (à durcir selon vos exigences) 4. **Branches & PRs** : **nécessite Developer Edition+** (CE = analyse de `main` uniquement) 5. **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 - [Documentation officielle](https://docs.sonarsource.com/sonarqube/latest/) - [GitHub SonarSource/sonarqube](https://github.com/SonarSource/sonarqube) - [Comparatif CE vs DE vs EE](https://www.sonarsource.com/plans-and-pricing/) - [Règles par langage](https://rules.sonarsource.com/) ## 🔗 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