Comparaison des solutions d'analyse de qualité¶
Cette page alimente un ADR (Architecture Decision Record) pour le choix du service d'analyse de qualité. Pour le format ADR, voir Documenter les decisions d'architecture.
Grille de comparaison¶
| Critère | SonarQube Community | Semgrep (CLI) | CodeClimate | Codacy |
|---|---|---|---|---|
| Licence | LGPL 3.0 | LGPL 2.1 (CLI) | Proprietaire | Proprietaire |
| Editions | Community / Dev / Ent | OSS CLI / Team / Ent | Free / Pro / Enterprise | Free / Pro / Enterprise |
| Modèle | Self-hosted | CLI + SaaS optionnel | SaaS uniquement | SaaS + Self-hosted |
| Langages supportes | 30+ (Community: 19) | 30+ | 15+ | 40+ |
| Profondeur d'analyse | SAST + qualité + debt | SAST pur (rapide) | Qualité + couverture | SAST + qualité |
| Quality gate CI | Natif (webhook + API) | Exit code pipeline | Oui (SaaS) | Oui (SaaS) |
| Quality profiles | Heritage, custom rules | Rulesets YAML | Config par repo | Config par repo |
| Regles custom | Java/XPath (Dev+) | YAML (facile a écrire) | Non | Patterns basiques |
| OWASP / CWE mapping | Complet | Complet | Partiel | Partiel |
| PR decoration | Dev/Ent (payant) | Via Semgrep App (SaaS) | Oui (SaaS) | Oui (SaaS) |
| Integration CI/CD | Scanner CLI + plugins | CLI natif, pre-commit | GitHub/GitLab webhook | GitHub/GitLab/BB |
| API REST | Complète | API App (SaaS) | Oui | Oui |
| IDE integration | SonarLint (gratuit) | VS Code, IntelliJ | Non | Partiel |
| Faux positifs | Taux moyen (tunable) | Taux faible | Taux moyen | Taux moyen-haut |
| Empreinte ressources | Elevee (JVM + ES) | Faible (CLI stateless) | N/A (SaaS) | N/A (SaaS) |
| Communauté / regles | 5 000+ regles built-in | 3 000+ regles (registry) | ~500 checks | ~1 000 patterns |
| Maturité | 14+ ans, référence | 5 ans, croissance forte | 10+ ans | 8+ ans |
Analyse détaillée¶
SonarQube Community — Recommande pour le quality gate centralise¶
Forces :
- Référence de l'industrie pour l'analyse de qualité continue
- Quality gate avec integration CI/CD mature (scanner CLI, plugins Gitea/GitHub/GitLab)
- Quality profiles avec heritage : un seul endroit pour définir les standards
- Suivi des tendances dans le temps (tableaux de bord projet et portfolio)
- SonarLint gratuit pour feedback instantane dans l'IDE du développeur
- API REST complète pour automatisation et reporting
- Mapping OWASP et CWE complet
Faiblesses :
- Empreinte ressources elevee (JVM + Elasticsearch integre)
- PR decoration réservée aux editions payantes (Developer+)
- Regles custom limitees en edition Community (pas de Java custom rules)
- Temps de scan plus long que Semgrep sur de gros projets
- Pas de support de branche en Community (analyse de la branche principale uniquement)
Limitations de l'edition Community
L'edition Community ne supporte qu'une seule branche par projet (la branche principale). L'analyse des pull requests et la PR decoration necessitent l'edition Developer. Pour un usage professionnel, évaluer le coût de l'edition Developer (~150 EUR/an pour 1M lignes).
Verdict : choix par defaut pour le quality gate centralise. L'edition Community suffit pour démarrer, l'upgrade vers Developer est recommande pour la PR decoration.
Semgrep CLI — Complement recommande pour le SAST¶
Forces :
- Analyse SAST extremement rapide (10-100x plus rapide que SonarQube sur le SAST)
- Regles custom en YAML, faciles a écrire et a partager
- Registre public de regles communautaires et professionnelles
- Integration native dans les pipelines CI (exit code, SARIF output)
- Pre-commit hook pour feedback avant le push
- Faible empreinte (CLI stateless, pas de serveur persistant)
- Taux de faux positifs tres faible grâce à l'analyse de flux de données
Faiblesses :
- Pas de quality gate au sens SonarQube (pas de dashboard de tendances)
- Pas de mesure de couverture, duplication ou dette technique
- Dashboard (Semgrep App) uniquement en SaaS
- Moins adapte pour l'analyse de maintenabilité et la complexité
Verdict : excellent complement a SonarQube. Utiliser Semgrep pour le SAST rapide dans le pipeline CI et les regles custom spécifiques a l'organisation.
CodeClimate — Alternative SaaS¶
Forces :
- SaaS sans infrastructure a gérer
- UI claire avec tendances et badges
- GPA (Grade Point Average) simple a comprendre
- Bonne couverture des metriques de maintenabilité
Faiblesses :
- SaaS uniquement (pas de self-hosted)
- Couverture SAST limitee comparée a SonarQube et Semgrep
- Pas de regles custom avancees
- Coût eleve pour les grandes équipes
- Dependance a un fournisseur externe pour des données sensibles
Verdict : acceptable si le SaaS est autorise par la politique de sécurité et que le self-hosting n'est pas une option. Non recommande pour les organisations avec des contraintes de confidentialite.
Codacy — Alternative multi-outils¶
Forces :
- Large couverture de langages (40+)
- Agregation de plusieurs outils (ESLint, Pylint, PMD, etc.)
- Option self-hosted disponible
- Integration GitHub/GitLab/Bitbucket native
Faiblesses :
- Taux de faux positifs plus eleve (agregation d'outils hétérogènes)
- Configuration complexe (chaque outil a sa propre config)
- Coût eleve en self-hosted
- Communauté plus restreinte que SonarQube
- Profondeur d'analyse SAST inférieure a Semgrep
Verdict : alternative viable si la couverture de langages est le critère principal. Moins recommande que la combinaison SonarQube + Semgrep.
Matrice de decision¶
graph TD
A{Self-hosted requis ?} -->|Oui| B{Quality gate centralise ?}
A -->|SaaS acceptable| C{Budget disponible ?}
B -->|Oui| D[SonarQube + Semgrep]
B -->|SAST uniquement| E[Semgrep CLI]
C -->|Oui| F[CodeClimate ou Codacy]
C -->|Non| D Decision recommandee¶
Decision ADR
SonarQube Community comme service centralise de quality gate, avec Semgrep CLI en complement pour l'analyse SAST rapide dans le pipeline CI.
Justification : couverture d'analyse la plus large (qualité + sécurité + dette technique), maturité production, self-hosted, quality gate CI integration, SonarLint pour le feedback IDE. Semgrep complète le dispositif avec un SAST rapide et des regles custom faciles a écrire.
Architecture combinée¶
Developpeur Pipeline CI SonarQube
│ │ │
├── SonarLint (IDE) ────────┤ │
│ feedback instantane │ │
│ ├── Semgrep scan ──────────────┤
├── git push ───────────────┤ SAST rapide (< 60s) │
│ │ │
│ ├── SonarQube scan ────────────┤
│ │ analyse complete │
│ │ │
│ ├── Quality gate check ────────┤
│ │ pass / fail │
│ │ │
└── PR status ◄─────────────┘ │
Critères de reevaluation¶
Cette decision doit etre reevaluee si :
- SonarQube Community ajoute le support multi-branche (elimine le besoin de l'edition Developer)
- Semgrep App propose une offre self-hosted abordable
- Un outil open-source emerge avec la couverture de SonarQube et la rapidite de Semgrep
- Les contraintes de confidentialite evoluent (autorisation du SaaS)
- L'edition Developer de SonarQube change de modèle de tarification