Content slides
Introduction à SonarQube¶
SonarQube est une plateforme d'analyse statique de code (SAST) qui aide à maintenir une haute qualité et sécurité applicative
- Identifie les bugs, les vulnérabilités et les mauvaises pratiques
- Mesure la dette technique et la couverture de tests
- S'intègre nativement dans les pipelines CI/CD pour automatiser les contrôles
Méthodologie "Clean as You Code"¶
La force de SonarQube réside dans sa philosophie de gestion de la qualité :
- Focus sur le nouveau code : L'objectif est de ne plus introduire de nouveaux problèmes
- Leak Period : Seules les modifications récentes sont soumises à la Quality Gate
- Amélioration continue : Le projet s'assainit progressivement au fil des développements
- Évite le découragement face à l'historique de la dette technique
Détection des Problèmes¶
- Bugs : Erreurs de logique ou comportements inattendus
- Vulnérabilités : Failles de sécurité basées sur les standards OWASP et SANS
- Hotspots de sécurité : Zones de code sensibles nécessitant une revue manuelle
- Code Smells : Mauvaises pratiques impactant la maintenabilité du code
- Duplication : Détection des copier-coller pour réduire la dette technique
Métriques et Qualité¶
- Complexité Cognitive : Évalue si le code est facile à comprendre pour un humain (supérieur à la complexité cyclomatique)
- Coverage : Pourcentage de lignes de code couvertes par les tests unitaires
- Reliability, Security, Maintainability : Notes de A à E pour chaque pilier
- Technical Debt : Estimation du temps nécessaire pour corriger les problèmes
Quality Gates¶
La Quality Gate est le "feu tricolore" de votre projet :
- Ensemble de seuils à respecter (ex : 0 bug critique, > 80% de coverage sur le nouveau code)
- Si un critère échoue, l'analyse passe au statut FAILED
- Permet de bloquer automatiquement la fusion (Merge Request) ou le déploiement
L'écosystème Sonar¶
- SonarLint : Extension IDE pour corriger les problèmes en temps réel pendant le codage (Shift Left ultime)
- SonarQube : Serveur centralisé pour la gouvernance et les Quality Gates
- SonarCloud : Version SaaS pour les projets open-source et les entreprises
Intégration avec GitLab CI¶
Exemple de job utilisant le scanner officiel :
sonarqube-check:
stage: test
image:
name: sonarsource/sonar-scanner-cli:latest
entrypoint: [""]
variables:
GIT_DEPTH: "0" # Requis pour l'analyse des branches
script:
- sonar-scanner
-Dsonar.projectKey=$CI_PROJECT_NAME
-Dsonar.sources=.
-Dsonar.host.url=$SONAR_HOST_URL
-Dsonar.token=$SONAR_TOKEN
-Dsonar.qualitygate.wait=true
Conclusion¶
- SonarQube est indispensable pour transformer le code en actif plutôt qu'en dette
- Prioriser la correction sur le nouveau code pour un impact immédiat
- Combiner avec SonarLint pour un cycle de feedback ultra-court
- Utiliser les Quality Gates comme gardiens de la production