
Vous en avez marre de côtoyer des projets Java contenant du code dupliqué, des classes avec une seule méthode de 2500 lignes et sans aucun commentaire ? Sonar est la solution a tout vos soucis ! (je sais, c’est une accroche commerciale mais parler qualité n’est pas toujours très attractif :)).
Sonar est un outil qui va mettre votre code à rude épreuve à l’aide d’un batterie de tests éprouvés.
Parlons d’abord de la qualité du code. Sonar embarque différents outils permettant l’analyse suivant 6 axes :
Sonar se base sur des projets existants pour faire les analyses suivantes :
Petit point sur le calcul de la complexité :
Sonar effectue un calcul de complexité du code permettant de déterminer la bonne disposition des instructions dans les classes Java. Cela permet de détecter les méthodes / les classes ayant une complexité forte aggravant la maintenance de l’application.
L’algorithme de calcul de la complexité est celui défini par Thomas McCabe, appelé complexité cyclomatique. Cet algorithme génère un graphe qui décrit tous les chemins possibles que peut prendre l’exécution du code. Plus le nombre de chemins est élevé, plus la complexité augmente.
Des méthodes ayant une mesure de complexité trop élevé seront susceptibles de réduire la possibilité de les maintenir et les comprendre correctement. La diminution de la complexité s’effectue alors en déportant des parties d’instructions dans de nouvelles méthodes ou classes.
Une fois les bases de la qualité de code évoquées, passons à l’installation du produit. L’installation de Sonar est relativement aisée. Il suffit soit de déposer Sonar dans un serveur d’applications en tant que WAR, soit de le démarrer en standalone. Par défaut, il embarque une base de données HSQL, il est possible d’utiliser un SGBD externe.
Une fois démarré, l’ajout de nouveaux projets se fait via Maven. Il faut donc au préalable que le projet soit configuré avec Maven et la commande mvn clean install sonar:sonar fera l’affaire. Il est possible d’ajouter des projets non-configurés avec Maven, mais cela requiert un peu plus de configuration (généralement, il suffit de créer un fichier pom.xml).

Ceci est le tableau de bord de votre projet, qui synthétise toutes les métriques liées à l’analyse, ainsi que leurs tendances par rapport à la précédente analyse. Le plus compliqué ici consiste à bien maitriser les métriques, qui sont consultables plus en détails avec des liens vers le code source. Par exemple, il est possible de consulter la partie de code qui engendre une violation critique en regard à une règle de conformité.
Sonar trouve logiquement sa place dans une logique d’intégration continue à coté d’un serveur Hudson par exemple. Grâce à la fonctionnalité des trends et de la time machine, la visualisation de l’évolution des métriques est aisée.

Sonar est aussi disponible pour PHP, cela reste de l’ordre de l’alpha, plus d’informations sont disponibles sur le site de codehaus.
Sonar est un outil puissant, pouvant être utilisé à des fins de suivi de la qualité du code sur un projet, ou encore pour en réaliser l’audit. La seule difficulté consiste à bien comprendre les métriques utilisées et les actions à mener en cas d’alerte. Nous considérons que la mise en place de Sonar dans le cadre de projets de développement est bienvenue, et nous la conseillons naturellement.