0% ont trouvé ce document utile (0 vote)
147 vues41 pages

Introduction à SonarQube en DevOps

Transféré par

aymeng442
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
147 vues41 pages

Introduction à SonarQube en DevOps

Transféré par

aymeng442
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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

Vous aimerez peut-être aussi