Sonar

Fiche logiciel validé
  • Création ou MAJ importante : 30/05/13
  • Correction mineure : 30/05/13
Mots-clés

Sonar : outil Open Source d'analyse de code source

Description
Fonctionnalités générales

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é.

Autres fonctionnalités

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).

Capture d'écran Sonar

Interopérabilité

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".

Contexte d'utilisation dans mon laboratoire/service

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.

Limitations, difficultés, fonctionnalités importantes non couvertes

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.

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré

Des paquets sont disponibles pour Ubuntu/Debian et Gentoo (http://docs.codehaus.org/display/SONAR/Install+Son...).

Plates-formes

Sonar étant une application Java, il s'utilise sur toute plate-forme pouvant exécuter une JVM.
Sonar est une application Web Java distribuée avec un conteneur Web embarqué (Jetty) et pouvant aussi se déployer dans n'importe quel conteneur Web Java. Sonar nécessite aussi une base de données (la base embarquée Derby n'est pas recommandée en production) parmi MySQL, Oracle, PostgreSQL ou SQLServer.

Logiciels connexes

Différents outils sont nécessaires pour installer et exécuter Sonar. Il sont décrits en détail sur cette page.

Autres logiciels aux fonctionnalités équivalentes
Environnement de développement
Type de structure associée au développement

La société SonarSource développe Sonar sous licence libre avec quelques contributions externes et commercialise du support et certains plugins.

Note : depuis la version 3.0 (avril 2012), SonarSource édite désormais 3 versions de Sonar :

  • Sonar Platform : version libre distribuée sous licence LGPL 3,
  • Sonar Professionnal : version incluant des plugins commerciaux et le support,
  • Sonar Enterprise : version incluant tous les plugins commerciaux et le support.
Eléments de pérennité

Sonar existe depuis 2007 et est désormais un produit reconnu et largement utilisé. SonarSource publie la roadmap du projet.
A noter le référencement de Sonar sur le site ohloh, à cette adresse.

Références d'utilisateurs institutionnels

La DSI de l'INRA utilise Sonar pour produire ses indicateurs de qualité de code.

La DSI du CNRS l'utilise également comme outil de qualité logicielle.

D'autres utilisateurs de cet outil sont cités ici.

Environnement utilisateur
Liste de diffusion ou de discussion, support et forums

Mailing list utilisateurs : user [at] sonar [dot] codehaus [dot] org
Mailing list développeurs : dev [at] sonar [dot] codehaus [dot] org

Documentation utilisateur

La documentation est proposée sous forme de différents articles décrivant des cas d'utilisation de Sonar et sur un wiki plus technique.

On y trouve en particulier le manuel d'installation.

La documentation sur le wiki de Sonar est parfois très technique et très détaillée et peut nécessiter un temps de prise en main.

La DSI du CNRS a également mis en ligne un article concernant Sonar.

Divers (astuces, actualités, sécurité)

L'utilisation d'un outil de construction automatisée tel que Ant ou Maven n'est pas obligatoire mais facilite grandement l'exécution des analyses par Sonar.
Une offre SaaS (Development as a Service) est disponible via le site NEMO : ceci peut être une solution au moins pour tester les possibilités de Sonar avant de réaliser une installation locale par exemple. Seuls les projets OpenSource peuvent utiliser ce service.
Sonar, couplé à Jenkins pour fournir un environnement complet d'intégration continue, est disponible sur plusieurs plateformes de Cloud :

Renater met aussi à disposition une plateforme Sonar : https://services.renater.fr/sourcesup/code_quality...

Les différentes possibilités d'effectuer une analyse de code par Sonar sont décrites sur cette page.

Contributions

Consulter http://www.sonarsource.org/support/contributors/ pour savoir comment contribuer à Sonar.