Comment utiliser SonarQube pour suivre et gérer la dette technique de vos projets ?

Dans cet article, nous allons explorer en détail comment utiliser SonarQube pour évaluer et améliorer la qualité de votre code, en mettant l'accent sur ses fonctionnalités clés telles que les profils qualité, les barrières qualité et l'intégration dans vos pipelines de développement. Découvrez comment SonarQube peut vous aider à maintenir un code de haute qualité et à éviter l'accumulation de dette technique.
thomasC.jpg
Thomas CHABOUDMis à jour le 24 Avr 2024
dette technique.png

Comment utiliser SonarQube pour suivre la dette technique de vos projets ?

Qu'est-ce que SonarQube ?

SonarQube est une plateforme d'analyse statique de code source développée par l'entreprise Sonar, et conçue pour aider les équipes de développement à évaluer et à améliorer la qualité de leur code. Elle fournit une gamme de fonctionnalités pour identifier les défauts de code, les vulnérabilités de sécurité, les problèmes de conformité aux normes et les pratiques de codage non-optimales.

La plupart des langages de programmation sont pris en charge par l'outil, il peut donc parfaitement s'intégrer à la plupart de vos projets internes.

Cet outil est disponible en version gratuite et payante. La principale différence réside dans le fait de pouvoir ou non effectuer un scan par branche.

L'interface web de SonarQube

L'interface web de SonarQube offre une plateforme centralisée qui vous permet de consulter facilement et rapidement tous les retours effectués suite à l'analyse du code.

La vue d'ensemble de votre projet avec SonarQube

Lorsque l'on effectue un scan avec SonarQube, de nombreuses informations de différentes catégories sont remontées. 

ecran_sonarqube_resume.png

On trouve 4 catégories de retours sur la plateforme contenant l'ensemble des règles non validées au sein du code scanné :

  • Fiabilité : Il s'agit des règles vérifiant la génération des comportements non désirés dans l'application, en d'autres termes, les bugs.

  • Maintenabilité : Il s'agit des règles de bonnes pratiques de code n'impactant pas le fonctionnement de l'application, mais plutôt la complexité, la lisibilité et donc la maintenabilité.

  • Sécurité : Il s'agit des vulnérabilités de code identifiées dans le projet, comme par exemple les problèmes de chiffrement de données non sécurisées.

  • Examen de la sécurité : Cette partie est légèrement différente, car elle ne remonte pas des règles, mais plutôt des questions sur des parties spécifiques du code qui pourraient être des potentiels failles de sécurité. L'idée est, pour l'utilisateur, de valider les choix effectués afin d'indiquer ou non si le code produit est volontaire.

L'onglet Code global permet d'observer les retours sur l'entièreté du code, et l'onglet Nouveau Code, uniquement sur le nouveau code produit depuis le dernier scan.

Sur cet écran, on trouve également le "Quality Gate Status" que nous analyserons ensuite plus en détail et qui permet de savoir si le code scanné valide ou non la "barrière qualité" définie.

Gérer les différentes règles de SonarQube

À chaque catégories y sont associées plusieurs règles. Ces dernières sont issues d'un référentiel interne à SonarQube, mais il est possible d'en ajouter d'autres si on le désire. 

ecran_sonarqube_regles.png

Lorsque l'on clique sur une des catégories (ici Maintenabilité), on est redirigé sur un écran qui récapitule l'ensemble des règles non validées par le projet, triées par criticité :

  • Bloquant
  • Critique
  • Majeur
  • Mineur
  • Info

Par défaut, chaque règle possède une "criticité" définie, mais il est possible de la modifier pour correspondre au mieux au contexte de vos projets.

Les profils qualité sur SonarQube

Un profil qualité nommé Sonar Way est défini par défaut pour chaque langage. Celui-ci intègre l'ensemble des règles actives et non dépréciées par SonarQube.

Il est toutefois possible de créer des profils de qualité personnalisés pour chaque langage, afin de contrôler les règles que l'on veut activer ou non, et même d'ajouter de nouveaux référentiels. 

sonarqube_barriere_qualite.png

Définir une barrière qualité sur SonarQube

Comme nous l'avons vu précédemment, il est possible de définir une barrière qualité pour ces projets. 

sonarqube_barriere_qualite.png

Dans cette barrière qualité, il est possible d'établir plusieurs conditions sur divers critères afin de déterminer si le code produit est conforme ou non.

Voici des exemples de critères que l'on peut définir :

  • La couverture de test est supérieure à 80%
  • Aucune vulnérabilité n'est présente
  • La duplication de code est inférieure à 20%
  • Le nombre de règles mineures est inférieur à 100

Intégrer SonarQube dans vos projets

SonarQube peut s'intégrer de plusieurs façons à vos projets, depuis un invité de commande ou via un CI/CDProcessus d'automatisation : Intégration Continue et Déploiement Continu. Si vous souhaitez le tester, il est possible de l'installer très facilement en local via Docker avec son image officielle.

Par défaut, il est possible d'effectuer un scan en passant simplement en paramètres du CLI les informations souhaitées, mais on peut également aller plus loin en créant, à la racine de vos projets, un fichier nommé sonar-project.properties qui sera lu par SonarQube au moment du scan pour lui spécifier ces mêmes informations afin d'éviter de surcharger la commande CLI.

Voici un exemple de contenu d'un fichier sonar-project.properties :

# URL de la plateforme SonarQube sur lequel on souhaite pousser le scan
sonar.host.url=https://www.sonar-distant.com

# Identifiant permettant de se connecter à SonarQube
sonar.login=xxxxx

# Identifiant unique du projet qui sera utilisé par SonarQube
sonar.projectKey=id-du-projet

# Nom du projet affiché sur SonarQube
sonar.projectName=nom-du-projet

# Source à scanner
sonar.sources=src/

# Liste des fichiers à exclure pour le scan
sonar.exclusions=src/assets/**, src/statics/**

# Permet d'indiquer au scan que l'on souhaite le retour sur la barrière qualité pour passer à la suite (si l'on souhaite par exemple stoper la pipeline en cas d'échec)
sonar.qualitygate.wait=true

# Pour du code java, il est nécessaire de préciser le dossier contenant les fichiers de build
sonar.java.binaries=build

Conclusion

SonarQube est un outil que nous vous conseillons vivement pour vos projets de développement.

Chez Axopen, SonarQube s'intègre dans nos développements pour assurer une constante qualité au niveau du code produit et ainsi éviter l'accumulation de la dette technique au sein de nos projets. Nous avons défini nos propres profils et barrières qualité afin de correspondre au mieux à notre vision d'un code propre. L'outil est également intégré dans nos pipelines afin de sécuriser les mises en recette et en production. Nous avons même pris parti de bloquer tout nouveau code qui ne serait pas conformes aux règles de qualités.

Nous l'utilisons également lors de nos audit de code source afin d'avoir un premier retour sur le code. Cela ne remplace bien sûr pas notre analyse manuelle effectuée lors de ces missions et intervient simplement en complément.