SonarQube
Bureau E204
© 2024-2025 – Module DevOps - SonarQube 1
Plan du cours
– Introduction
– Tests dynamiques et Tests statiques
– SonarQube
• Définition
• Utilisation ( Intégration avec
• Caractéristiques
l’outil Jenkins)
• Fonctionnalités • Analyse des résultats
• Rapports • Exemple
• Architecture
• Installation (Plugin / Image Docker)
– Travail à faire
© 2024-2025 – Module DevOps - SonarQube 2
Introduction
Une application fonctionnelle peut comporter :
Un code dupliqué à plusieurs endroits.
Les méthodes ne sont pas commentées.
Une négligence des bonnes pratiques de développement:
( CamelCase newString;, , etc …)
Des problèmes peuvent provenir :
Des bugs (Exemple : Appliquer un getter sur un objet nul )
Des tests unitaires mal développés
Classes trop volumineuses à découper
© 2024-2025 – Module DevOps - SonarQube 3
Tests dynamiques et Tests statiques
• Les tests font partie de cycle de vie du développement d’une
application donnée.
• Les tests visent à s’assurer que le code qui sera déployé est de
bonne qualité, sécurisé et ne présente pas de bugs (environ
30% du temps de développement doit être consacré aux tests).
Développeur Testeur Déploiement
© 2024-2025 – Module DevOps - SonarQube 4
Tests dynamiques et Tests statiques
• Les tests dynamiques : Ces tests sont faits alors que l’application
tourne, pour détecter les dysfonctionnements (fonctionnalités
mal implémentées, DB inaccessible, …) : Tests Unitaires (JUnit par
exemple).
• Les tests statiques : Ces tests sont faits sur le code source, avant
de l’exécuter. Il s’agit d’analyser le code pour détecter les
écarts aux bonnes pratiques de développement (absence de
logs, absence de commentaires. SONARQUBE fait ce type de
tests).
© 2024-2025 – Module DevOps - SonarQube 5
SonarQube - Définition
• SonarQube est un outil de test statique, open source, utilisé pour
analyser la qualité du code source, selon des règles prédéfinies.
II permet donc l’inspection en continue de la qualité de votre
code (Code Review automatique).
• SonarQube s’appuie sur l’analyse statique du code.
© 2024-2025 – Module DevOps - SonarQube 6
SonarQube - Caractéristiques
• SonarQube peut être utilisé avec une vingtaine de langages
(Java, .Net (C#), Python, PHP, Cobol, JavaScript, …)
• Il permet de détecter les défauts de codage (code jamais
utilisé, dupliqué, sans commentaires, sans tests unitaires, sans
gestion d’exception, non sécurisé, ….).
• Il nous permet de choisir les règles à activer lors de l’analyse de
notre code.
© 2024-2025 – Module DevOps - SonarQube 7
SonarQube - Fonctionnalités
Appart la qualité de code, SonarQube s’intéresse à plusieurs aspects
tels que :
La détection rapide des erreurs
Les applications durables
Une meilleure productivité
La flexibilité
La réduction des coûts
L’ évaluation de la couverture du code par les tests unitaires
Des analyses entièrement automatisées (intégration avec
Jenkins et Maven)
© 2024-2025 – Module DevOps - SonarQube 3
SonarQube - Rapports
SonarQube génère différents types de rapports qui s’intéressent à
différents aspects de qualité :
Architecture de l’application
Test unitaire
Codes dupliqués
Bugs potentiels
Code complexe
Règles de programmation
Commentaires
© 2024-2025 – Module DevOps - SonarQube 3
SonarQube - Couverture du code
• SonarQube permet de connaitre le nombre de tests unitaires
joués, le taux de succès et la couverture de ces tests.
• La couverture de tests correspond au pourcentage de lignes de
code du projet utilisés pour l’analyse.
• Une couverture basse est l’indice d’une carence dans les tests
et engendre des interrogations sur la fiabilité du produit.
• Un taux de succès des tests qui n’est pas à 100% est un indice
que un ou plusieurs tests unitaires ( ou fonctionnalités ) ont été
mal développés.
© 2024-2025 – Module DevOps - SonarQube 3
SonarQube - Architecture
© 2024-2025 – Module DevOps - SonarQube 11
SonarQube - Architecture
• SonarQube est constituée de plusieurs composants :
- Un exécuteur qui lance les outils d’analyse de code sources externes et
internes ;
- Des plugins qui étendent SonarQube : support d’autres langages (PHP),
métriques supplémentaires (couplage avec JDepend), utilisation
d’analyseurs externes (PMD, Findbugs, …) ;
- Un serveur Sonar qui :
o Agrège les résultats des analyses et les enregistre dans la base ;
o Permet aux développeurs de consulter les résultats des analyses
des projets depuis un serveur web (tableaux de bords) ;
o Gère les recherches faites depuis l’interface web (ElasticSearch)
© 2024-2025 – Module DevOps - SonarQube 12
SonarQube - Architecture
- Une base de données (par défaut H2, mais il peut utiliser MySQL,
PostgreSQL, SQLServer, Oracle) pour stocker :
o Les réglages de configuration ;
o L’historique des analyses des projets surveillés par sonar ;
• Il est possible d’automatiser l’analyse avec un serveur d’intégration
continue (Exemple: Jenkins, Travis).
• SonarQube permet l’inspection de code en continu (intégration dans
les IDE, vérification de la qualité depuis la dernière version ou la dernière
analyse, notifications par email), ce qui permet de détecter les
problèmes dès leur introduction dans le code, avant que le coût de
remédiation soit élevé.
© 2024-2025 – Module DevOps - SonarQube 13
SonarQube - Installation
SonarQube est accessible de divers manières :
- Plugin au niveau de l’IDE (STS, IntelliJ, …)
- Image Docker
- …
© 2024-2025 – Module DevOps - SonarQube 14
SonarQube – Installation (Plugin)
• Dans Intellij, aller dans File -> Settings -> Plugins, chercher
« sonarLint », installer le plugin « SonarLint » et accepter de
redémarrer ton IDE
© 2024-2025 – Module DevOps - SonarQube 15
SonarQube – Installation (Plugin)
© 2024-2025 – Module DevOps - SonarQube 16
SonarQube – Installation (Plugin)
• Pour faire l’analyse, Ouvrir un de vos projets, bouton droit et
choisir « Sonar Lint » -> Analyze with SonarLint
© 2024-2025 – Module DevOps - SonarQube 17
SonarQube – Installation (Plugin)
Vous aurez les différentes suggestions de correction/amélioration
de code:
© 2024-2025 – Module DevOps - SonarQube 18
SonarQube – Installation (Image Docker)
• Récupérez l’image Docker «sonarqube:8.9.7-community» de
DockerHub
docker pull sonarqube:8.9.7-community
• Lancez Sonarqube :
docker run -p 9000:9000 sonarqube:8.9.7-community
Optionnel: C’est possible de lancer Sonar en background (option -d ou un
docker start sur le conteneur).
© 2024-2025 – Module DevOps - SonarQube 19
SonarQube – Utilisation (Image Docker)
• Sur votre machine Windows, aller à l’url
[Link]
et se connecter avec « admin / admin » :
• Changer le mot de passe à sonar par exemple (admin / sonar).
© 2024-2025 – Module DevOps - SonarQube 20
SonarQube – Utilisation (Image Docker)
• Attention: Si vous arrêtez le conteneur sonarqube (CTRL S ou en arrêtant la VM),
il ne faut pas lancer un docker run sur l’image sonarqube, car cela créera un
nouveau conteneur. Il faut juste chercher le conteneur lançant Sonar :
• Puis faire un docker start id-conteneur-sonarqube et attendre quelques
minutes le temps que tout se lance (Elasticsearch, Sonarqube, …) :
© 2024-2025 – Module DevOps - SonarQube 21
SonarQube – Utilisation (Avec Jenkins)
• Puisque nous n’avons pas de projets à analyser sur notre VM, nous
allons utiliser Jenkins, pour récupérer un projet de Git, puis l’analyser
avec Sonarqube :
• Se connecter à Jenkins via l’url [Link]
• Sur le pipeline Jenkins déjà créé, récupérer le code de votre projet de Github
en ajoutant le stage suivant dans le script Groovy (mettez l’URL de votre
projet ou testez avec le repo Git ci-dessous) :
© 2024-2025 – Module DevOps - SonarQube 22
SonarQube – Utilisation (Avec Jenkins)
• Sur le même pipeline, lancer les commandes Maven clean et compile
pour compiler le code de votre projet récupéré de Git (sh « … ») :
© 2024-2025 – Module DevOps - SonarQube 23
SonarQube – Utilisation (Avec Jenkins)
• Sur le même pipeline, lancer la commandes Maven d’analyse de
code sonar:sonar pour analyser la qualité de votre code et envoyer le
rapport au serveur Sonarqube (Mettez le mot de passe de votre
Sonarqube) :
• Lancer le Job via Jenkins :
© 2024-2025 – Module DevOps - SonarQube 24
SonarQube - Analyse des résultats
• Aller dans [Link] et regarder le résultat de l’analyse de
votre projet :
• Sur l’interface ci-dessus, il suffit de cliquer sur le projet pour accéder aux
détails de toute cette analyse :
• Sonarqube détecte automatiquement le langage (Java + XML dans
notre cas)
• Sonarqube vérifie si le développeur a mis du code dupliqué dans
plusieurs endroit (source d’erreur) : 0% dans notre cas
© 2024-2025 – Module DevOps - SonarQube 25
SonarQube - Analyse des résultats
• Aller dans [Link] et regarder le résultat de l’analyse de votre
projet :
• Métriques par défaut:
• Pour modifier les métriques, il suffit juste accéder à l’onglet « Quality
gate » et créer un nouveau portail de qualité
© 2024-2025 – Module DevOps - SonarQube 26
SonarQube - Analyse des résultats
• Bug : Un code qui peut engendrer un mauvais comportement de
l’application (un null pointer exception par exemple), dans notre cas :
• Vulnerability : Faille de sécurité dans notre code.
• Hotspots Reviewed : Code à revoir pour être sûr que ce n’est pas une
faille de sécurité.
© 2024-2025 – Module DevOps - SonarQube 27
SonarQube - Analyse des résultats
• Sonarqube affiche si le code a été exécuté par les outils de tests (comme
JUnit). Sonarqube ne fait pas l’analyse lui-même mais se base sur d’autres outils
comme JaCoCo (c’est pour cela qu’on a 0% de Coverage puisque JaCoCo
n’est pas ajouté à notre projet).
• Code Smells : Ce n’est pas un bug, mais c’est un code qui peut retarder
l’équipe de développement ou l’équipe de support quand ils essaient de
comprendre ou modifier le code (exemple : beaucoup de commentaires ou
des imports non utilisés) :
© 2024-2025 – Module DevOps - SonarQube 28
SonarQube – Exemple (Erreur/Correction)
© 2024-2025 – Module DevOps - SonarQube 29
SonarQube – Exemple (Erreur/Correction)
© 2024-2025 – Module DevOps - SonarQube 30
SonarQube – Exemple (Erreur/Correction)
© 2024-2025 – Module DevOps - SonarQube 31
SonarQube – Exemple (Erreur/Correction)
© 2024-2025 – Module DevOps - SonarQube 32
SonarQube – Exemple (Erreur/Correction)
© 2024-2025 – Module DevOps - SonarQube 33
SonarQube – Exemple (Erreur/Correction)
© 2024-2025 – Module DevOps - SonarQube 34
SonarQube – Exemple (Erreur/Correction)
© 2024-2025 – Module DevOps - SonarQube 35
SonarQube – Exemple (Erreur/Correction)
© 2024-2025 – Module DevOps - SonarQube 36
SonarQube – Exemple (Erreur/Correction)
© 2024-2025 – Module DevOps - SonarQube 37
SonarQube – Exemple (Erreur/Correction)
© 2024-2025 – Module DevOps - SonarQube 38
Travail à faire
• Installer Sonar et essayer de fixer le maximum d’erreurs détectées
sur le projet.
© 2024-2025 – Module DevOps - SonarQube 39
SonarQube
Si vous avez des questions, n’hésitez pas à
nous contacter :
Département Informatique
UP ASI
Bureau E204
© 2024-2025 – Module DevOps - SonarQube 55
SonarQube
© 2024-2025 – Module DevOps - SonarQube 1