Image fusée

SonarQube ! Ou comment analyser la qualité de votre code en 15 min !

Présentation du logo de l'outil Savez-vous ce qui peut mettre en rogne un.e développeur.se informatique ? Qu’on ose critiquer son code ! Vous en connaissez un.e ? Mettez-le/la à l’épreuve en lui suggérant d’analyser la qualité du code d’un de ses projets avec un outil devenu incontournable : j'ai nommé SonarQube. Mais rassurez le/la en précisant que cet outil n’est pas seulement là pour lui dire : “ton code est affreux...” En effet, SonarQube va aussi pouvoir lui suggérer des bonnes pratiques à respecter et ainsi améliorer considérablement la qualité de son code.

SonarQu...oi ?

SonarQube est un logiciel open-source développé par la société SonarSource. Il permet de mesurer la qualité de votre projet de plusieurs façons.
  • Respect des règles et normes du code
  • Documentation du code
  • Analyse des tests unitaires (couverture du code, etc.)
  • Duplication du code
  • Vulnérabilités potentielles (par degré d’importance : mineure, majeure, bloquante)
  • Génération de rapports
  • Compatibilité avec GitLab et GitLab CI (pour de l’intégration continue.. oui, oui !!)

Et comment ça fonctionne ?

SonarQube comprend en fait “deux sous-applications” :
  • un moteur d’analyse (le scanner) : installé localement sur la machine du développeur.
  • un serveur centralisé : pour la conservation des enregistrements et la création de rapports.
Une seule instance de serveur SonarQube est capable de prendre en charge plusieurs scanners. Vous pouvez donc centraliser les rapports sur la qualité du code provenant de nombreux développeurs en un seul endroit. Remarque : je ne suis aucunement affilié avec SonarSource. Mais j’ai choisi de vous présenter cet outil puisqu’il offre la possibilité de couvrir énormément de langages (plus de 25) comme le C, C++, C#, PHP, Javascript ou Java. D’autre part, SonarQube sait s’adapter à la version de votre langage et est ainsi capable de vous signaler du code déprécié…

Avoir un code de qualité ? C'est primordial !

En effet, un code de qualité facilitera la maintenance de votre projet. Votre code sera plus modulaire par exemple, et surtout, beaucoup plus exploitable si d’autres développeurs devaient se charger de reprendre votre fardeau flambeau. De plus, vous réduisez le risque de “bogues” et vous augmentez les performances de votre solution (plus de duplication de code, plus de code inutile, plus de code déprécié, etc.). En conclusion, votre code sera “tout propre et en bonne santé”. Prenez soin de votre code, il le mérite... Vous pourrez, par la suite, frimer auprès de vos collègues en sous-entendant que SonarQube n’y est pour rien et que seul votre talent est la conséquence de ce travail irréprochable...

Installation de SonarQube : analysons la beauté du code

Dans ce qui va suivre, je vous propose de monter un environnement SonarQube localement sur votre machine pour tester rapidement (et facilement !) la qualité de votre code. Pour cela, nous allons déployer un serveur SonarQube et utiliser un scanner pour analyser notre mine d’or et créer des rapports. Et parce que nous aimons la facilité, je vous propose d’utiliser Docker. Si vous connaissez très peu la chose, je vous suggère de visiter ces liens très intéressants :

Première étape : installez Docker

Pour Ubuntu & Debian, tapez cette commande dans votre terminal :
curl https://releases.rancher.com/install-docker/18.03

Ensuite : installez SonarQube Community et lancez-le

Dans votre terminal, tapez les 2 commandes suivantes :
docker pull sonarqube
docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube
Vous pouvez maintenant accéder au serveur SonarQube et consulter l’interface sur http://localhost:9000 (ça peut durer quelques secondes avant de pouvoir accéder à l'interface...) Facile, non ? SonarQube - Présentation d'interface Vous pouvez vous connecter en utilisant le couple admin/admin.

Étape 3 : configurez l'analyse de votre projet

A la racine de votre projet, créez un fichier sonar-project.properties et copiez-y le contenu suivant :
# Doit être unique dans l'instance SonarQube
sonar.projectKey=votre_clé_unique

# Le nom et la version affichés dans l'interface SonarQube
sonar.projectName=MonProjet
sonar.projectVersion=1.0

# Le chemin relatif aux fichiers que vous vous souhaitez analyser dans votre code

sonar.sources=src

# Cas d'un projet utilisant composer. 
# On ignore l'analyse du code présent dans les dépendances.

sonar.exclusions=vendor/**

# Encodage du code source.
sonar.sourceEncoding=UTF-8
Étape 4 : lancez le scanner  Dans votre terminal, dirigez-vous à la racine de votre projet et tapez la commande suivante :
docker run -ti -v votre_chemin_projet/:/root/src --link sonarqube newtmitch/sonar-scanner
Remarque : pensez à renseigner votre chemin après le flag -v. De plus, il est possible que cette commande ne fonctionne pas sous Windows. J’ai (seulement) testé sur Ubuntu et MacOs X.

 Et pour finir : consultez le rapport généré

Lorsque vous voyez “ANALYSE RÉUSSIE”, vous pouvez retourner sur l’interface de SonarQube (http://localhost:9000). Vous pouvez constater que votre projet a bien été analysé. Cliquez dessus, et admirez le résultat.. ou pas ! SonarQube - Analyse de code terminée Peu importe le résultat obtenu, restez calme... D'abord, allez vous faire un café. Ensuite, prenez un bon bol d’air. Puis revenez sur votre poste informatique. Alors, laissez-moi deviner, vous avez du pain sur la planche, non ? Il y a d'autres écrans qui montrent des détails plus exploitables. Nous n’allons pas rentrer dans l’explication détaillée de chaque écran proposé par l’interface de SonarQube car je trouve qu’ils sont facilement compréhensibles. Voyons simplement un exemple d’interprétation : SonarQube - Exemple d'interprétation du code Cet écran vous propose une visualisation d’ensemble de votre code analysé. Plus la couleur d’une bulle est proche de rouge, plus les “bogues” sont graves. La taille de la bulle indique le volume du bogue, alors que la position verticale de chaque bulle indique le temps estimé pour traiter les bogues. Magique, non ? Bon, en ce qui me concerne, cet écran ne m’indique rien qui vaille... Et vous ?

En bref, je recommande SonarQube

Sachez qu’il existe d’autres moyens d’utiliser SonarQube avec et sans Docker. Mais personnellement, je vois un réel intérêt d’utiliser SonarQube dans un processus d’intégration continue. Installez une instance de SonarQube sur l’un de vos serveurs et installez le scanner sur chaque poste de dev. En utilisant GitLab, vous pourrez vérifier que, lors de chaque commit, votre code est plutôt correct. Par conséquent, il pourra être déployé sans risques... SonarQube vous propose énormément de fonctionnalités. J’espère donc que cet article vous donnera envie de creuser un peu plus sur le sujet.
16/11/2018
Image auteur
Jordan Protin
Développeur Front

2 commentaires pour "SonarQube ! Ou comment analyser la qualité de votre code en 15 min !"

  • admin

    10/02/2023

    Bonjour John, Merci pour votre retour. Bon courage pour votre recherche. C'est un très bon choix de vous orienter vers le DevOps, c'est un domaine passionnant. L'article concernant les containers d'applications virtualisés n'a pas encore été publié sur notre blog. Restez connecté, il devrait arriver prochainement ! D'ici là, je peux vous rediriger sur mon espace public gitlab où j'ai partagé quelques trucs & astuces : https://gitlab.com/jordanprotin/public/docs Bonne continuation. Jordan PROTIN


  • John

    09/02/2023

    Bonjour Merci pour cet article très instructif. Je vais tenter d’analyser le code de mon application python. Je suis débutant dans le domaine. Je viens de terminé une formation DevOps de trois mois. Et je recherche activement un post en tant que DevOps junior. Je continue à me former en autodidacte. C’est pourquoi vos articles m’intéressent beaucoup. Où peut-on trouver votre prochain article sur les containers d’applications virtualisés ? Je vous remercie de votre attention. Bravo pour cet article. John


Laissez nous un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous aimerez aussi ...

Icone fusée

Démarrez votre projet digital !

Je me lance