Initial vault setup
This commit is contained in:
@@ -0,0 +1,159 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user