01
août

Auditer ses codes-sources avec le logiciel Sonar

Rédigé par . Publié dans Divers

Un court article pour vous présenter et vous guider vers une première approche de la solution Sonar.

Au fur et à mesure des projets, une besoin pouvant être rencontré assez souvent concernant les développements est celui du « contrôle de la qualité du code« , tâche qui peut s’avérer parfois fastidieuse, surtout lorsqu’elle nécessite d’être répétée régulièrement dans le cycle de vie d’intégration de nombreuses actions correctives et évolutions sur divers projets.

Afin de favoriser cela,  l’outil Sonar s’avère être un excellent compagnon de combat pour la chasse aux divers bugs et autres erreurs/failles de programmation.

Qu’est-ce que Sonar ?

Sonar (Version actuelle : 2.8 ) est un utilitaire open-source, édité par la société suisse SonarSource.

Le logiciel est entièrement conçu en java, et devient rapidement une référence parmi les outils d’audit de code existants sur le marché.

Son côté open-source et facile d’accès le rend particulièrement intéressant, rapide à mettre en œuvre et à incorporer dans un contexte de développement en mode projet. Nous allons voir dans la suite de cet article comment mettre en place rapidement cet outil et le tester sur une source.

Prérequis

Pour une utilisation optimale de l’outil Sonar, il est conseillé de disposer au préalable d’une version de Maven (version 2.0 au minimum).

En effet , pour un projet « mavenisé »  il suffira d’exécuter une simple commande pour déployer le projet sous le serveur Sonar. Dans la suite de cet article nous traiterons le cas d’un projet déjà passé sous contexte Maven, mais il est toutefois possible de migrer ses projets sous Sonar sans passer par Maven.

Un moyen simple de vérifier que Maven est installé est d’ouvrir un invité de commande et taper la commande mvn –version

Si le message « mvn n’est pas une commande reconnue » apparaît, il faudra installer une version de maven avant de passer à la suite de cet article.

Comment installer Sonar

Une fois Maven installé, le package Sonar est disponible en téléchargement via le lien suivant :

http://www.sonarsource.org/downloads/

Suite à cela il faut exécuter le StartSonar.bat présent dans le répertroire bin/ du package récupéré. Par défaut le port d’accès au serveur Sonar est 9000. Après quelques secondes vous pouvez donc consulter la page d’accueil de Sonar sur le lien par défaut :

http://localhost:9000

L’IHM proposée est assez claire et facile d’accès, proposant les diverses options d’intégration des informations provenant des audits. L’environnement Sonar est prêt. Nous pouvons à présent passer à la suite et « tester » notre code via l’outil :)

Configuration

A noter que l’on peut paramétrer plusieurs éléments spécifiques à l’audit du code à inspecter ( projet ou projets à vérifier, sévérité des erreurs/remarques remontées, utilisateur etc..)

Au niveau des sources, vous pouvez à présent « envoyer » les informations de votre code vers le repository ciblé par Sonar.

Pour cela, se placer dans le répertoire de votre projet (au niveau du fichier pom.xml parent du projet) et exécuter la commande suivante :

mvn clean install sonar:sonar

Le projet ciblé par l’installation apparaît à présent sur le serveur Sonar sur le  localhost:9000 , avec toutes les statistiques récupérées après inspection du code.

Cas concret avec le projet YouGO

Pour illustrer l’utilisation de Sonar, nous allons l’appliquer aux sources du projet YouGO récupérées depuis le repository svn :

Après un clean install sur tous les pom.xml de ce projet, voici ce que nous obtenons :

Bien entendu, il en ressort que le retour d’audit s’interprète comme positif. Il est intéressant de découvrir la façon dont les différents résultats de l’audit sont présentés :

  • La partie Tableau de Bord (Dashboard) présente sous forme de chiffres et statistiques les informations sur le projet investigué (dans cet exemple : la partie Data Transfert Object de Yougo ). On y retrouve le nombre de lignes de code, le nombre éventuel de violations relevées, de duplication, le niveau de complexité du code etc :

  • La section Composants (Components) quant à elle dresse la liste des packages composants applicatifs de l’application concernée, avec à droite un graphe modélisant leur proportion selon la quantité de lignes de code, ainsi que la criticité relevée suite à l’audit :

  • Une autre section Violations Drilldown ( que nous pouvons traduire « investigation des violations » ) va expliciter plus amplement la nature des violations mineures ou majeures relevées. A noter que certaines erreurs remontées peuvent parfois être sujettes à discussion, comme c’est le cas pour l’erreur illustrée ci-dessous :

  • La partie Time Machine peut par la suite s’avérer très intéressante, car elle met en perspective l’évolution de la qualité du code source avec le temps :

  • Une autre fonctionnalité intéressante est celle appelée Hotspots ( traduire .. « Points chauds » ) :

Cette fonction met en relief la ou les failles ou remarques relevées qui s’observent le plus souvent, comme dans cet exemple où Sonar nous indique que la règle du « Magic Number » n’est pas respectée lors de 12 occurrences dans la partie Business Objects de YouGO.

Si comme moi vous ne savez pas à quoi fait allusion cette fameuse règle du nombre magique … nous avons la réponse en ouvrant le détail de la remarque :

Ha il ne s’agissait donc que de cela … :)

…. A noter que la façon d’investiguer le code peut totalement être configurée dans la partie propriétés : paramétrer le niveau de sévérité des erreurs remontées, la nature de ces erreurs etc..

En conclusion

Comme nous l’avons vu, l’outil Sonar offre donc de nombreuses fonctionnalités, très instructives pour assurer un bon suivi qualitatif de code des différents projets. Il saura supplanter dans la majorité des cas les campagnes d’audits de codes manuels, ce qui implique un gain de temps assez conséquent pour une équipe.

Cet utilitaire est une solution à la demande sans cesse croissante de qualité, et pourra demain devenir un des incontournables de la bonne gestion du cycle de vie d’un projet.

Mots-clefs :, ,