Files
wiki/Catalogue-Self-Hosted/apps/app-sonarqube.md
T
2026-06-09 18:40:21 +02:00

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 :

  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

# 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

  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

🔗 Pages Liées