Sonar
Sonar est une plate-forme Open Source permettant d'effectuer l'analyse statique de code selon différentes règles. Elle fournit des indicateurs et des métriques de qualité qui sont visualisés via un conteneur Web (Jetty) intégré dans Sonar. Les résultats de l'analyse sont stockés dans une base de données intégrée dans Sonar ou extérieure (voir rubrique "Plates-formes" plus loin). Les rapports, indicateurs et métriques sont également proposés via des plugins dont certains sont fournis nativement avec le logiciel et les autres, libres ou commerciaux, sont disponibles par une installation complémentaire.
Ce type d'outil est destiné à une équipe de développement, aux chefs de projets, éventuellement à une équipe chargée de la maîtrise d’œuvre (MOE) ou de l'assistance à la MOE.
Les fonctionnalités principales sont l'analyse du respect des règles de codage, des conventions de nommage, du pourcentage de commentaires, la détection de bugs, la détection de duplication de code, la détection de code mort, le calcul de couverture des tests unitaires et d'intégration, la détection de cycles, le calcul du nombre de lignes de code, de classes, de méthodes et le calcul de la complexité cyclomatique.
Sonar propose différentes possibilités pour lancer l'analyse et alimenter la base de données de celles-ci :
- le plugin Maven,
- une tâche dans Ant (à partir de Sonar 2.8),
- le Java Runner (à partir de Sonar 2.6), outil téléchargeable sur le site Sonar tournant dans une JVM comme seul support nécessaire,
- ou une machine CI (continous integration/inspection).
En fonction du choix que l'on fait, on peut plus ou moins facilement automatiser de manière continue l'analyse du code pour faire de l'inspection continue : c'est ce qui est fait à la DSI INRA en utilisant Sonar avec Maven.
De part la richesse des outils d'analyse existants dans le monde Java, Sonar offre une meilleure intégration et plus de fonctionnalités pour les projets Java mais dispose aussi d'outils d'analyse pour d'autres langages notamment C, C++, C#, Groovy, JavaScript et PHP.
Sonar garde l'historique de l'ensemble de ses analyses ce qui permet de voir, tout le long d'un projet, l'évolution de ses indicateurs de qualité.
Les plugins de Sonar permettent d'enrichir ses fonctionnalités afin d'obtenir d'autres agrégations de métriques et indicateurs comme par exemple le calcul de la dette technique.
La capture d'écran ci-dessous montre le résultat d'un projet analysé par Sonar, visualisée à travers le conteur Jetty de Sonar et un navigateur. La structure web permet de suivre les points identifiés comme critiques (ici l'utilisation d'accolades) selon leur fréquence, leur présence dans certains fichiers ou implémentations de classes et leur type, jusqu'au code source (cliquer sur l'image pour l'agrandir).
Il est possible de récupérer les analyses d'un serveur Sonar dans Eclipse grâce à un plugin gratuit.
Sonar propose aussi un plugin Maven permettant de déclencher une analyse lors d'une étape de fabrication.
Enfin, il existe plusieurs plugins d'intégration avec des systèmes tiers : Ldap, Google Calendar, Bamboo, Jenkins,...
Voir aussi l'interconnexion avec une base de données, dans la rubrique "Plates-formes".
Dans le cadre de l'industrialisation de ses développements Java, la DSI de l'INRA utilise le serveur Sonar comme outil de production d'indicateurs et de métriques de qualité de code sur ses développements Java internes et externalisés.
L'installation des plugins se fait facilement depuis l'interface graphique mais la mise à jour (montée de version) est une opération manuelle pouvant être délicate (bien lire la release note qui indique les modifications apportées à la version).
L'analyse de projet C++ peut être effectuée par 2 plugins, l'un libre mais encore en version 0.x (http://docs.codehaus.org/pages/viewpage.action?pag...), l'autre commercial mais complet (http://www.sonarsource.com/products/plugins/langua...).
La base de données embarquée Derby incluse dans Sonar n'est pas recommandée en production.