Aller au contenu

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