VIII. Plugins▲
VIII-A. Intérêt des plugins▲
Il existe aujourd'hui près d'une quarantaine de plugins pour Sonar. La liste de ces plugins est disponible ici.
Actuellement, les plugins sont divisés en plusieurs catégories, selon leur utilité première.
- Métriques additionnelles : permet de calculer de nouvelles métriques pour Sonar. Il s'agit en général de permettre le support d'outils externes (JaCoCo, JIRA, JMeter, Mantis, SonarJ, etc.).
- Nouveaux langages : par défaut, Sonar ne gère que le langage Java, mais grâce à l'ajout de plugins, de nombreux autres langages peuvent être gérés (C, C#, Groovy, JavaScript, PHP, Visual Basic 6, etc.). Attention, certains d'entre eux sont des plugins commerciaux.
- Visualisation : plugins permettant un affichage différent des métriques calculées par Sonar.
- Gouvernance : offre le support de nouvelles méthodologies d'analyse, comme par exemple SQALE.
- Intégration : permet une meilleure intégration de l'outil Sonar dans l'usine logicielle, par exemple en offrant un support avec Hudson ou Bamboo (serveurs d'intégration continue). Certains de ces plugins sont destinés à être installés en dehors de Sonar.
- IDE : plugins destinés aux IDE (outil de développement comme Eclipse ou IntelliJ IDEA) offrant une intégration plus poussée avec Sonar.
Ci-dessous, quelques captures d'écran de l'utilisation de ces plugins :
On pourra également s'intéresser au plugin SCM Activity, qui va récupérer un certain nombre d'informations depuis le gestionnaire de sources (CVS, SVN per exemple) pour s'en servir dans Sonar. Il sera dès lors possible d'améliorer le niveau de qualité de l'inspection continue que l'on réalise sur ses projets, comme cela est expliqué ici.
VIII-B. Installation▲
En règle générale, le plugin se présente sous la forme d'un fichier JAR qu'il faut télécharger ici. Ensuite, il suffit de déposer ce fichier dans le répertoire extensions/plugins/ du serveur Sonar (que l'on aura au préalable arrêté), puis de redémarrer le serveur. Toutefois, il se peut que cette règle diffère légèrement d'un plugin à un autre (en particulier les plugins d'intégration).
Avant l'installation d'un plugin, il est préférable de consulter sa compatibilité avec les versions de Sonar. Ceci peut se faire soit en consultant la page du plugin, soit sur la page de matrice de compatibilité.
Attention, l'installation des plugins se faisant dans le répertoire extensions/plugins/ du serveur Sonar, lorsque l'on met à jour Sonar, il est important de réaliser une sauvegarde de ce répertoire !
VIII-C. Développement de nouveaux plugins▲
Nous n'aborderons pas ici le développement d'un nouveau plugin pour Sonar, mais dans le cas où le sujet vous intéresse, vous pouvez vous rendre sur la page wiki de Sonar traitant de ce sujet.
VIII-D. API web services de Sonar▲
Sonar propose une série d'API qu'il est possible d'appeler afin de récupérer un certain nombre d'informations. On trouvera le détail de ces API sur cette page.
Pour appeler l'un de ces services, il suffit d'appeler une URL spécifique, en renseignant le nom du service appelé, et des différents paramètres propres à ce service, de cette façon :
http://url-sonar/api/[nom-du-service]?param1=value1¶m2=value2
En général, on pourra spécifier la ressource (qui peut être un projet, un module, un package ou même une classe) ou encore le format (selon le service appelé, on peut disposer des formats texte, CSV, XML, JSON, etc.)
Voici quelques exemples d'appels à ces web services :
URL | Définition |
---|---|
http://url-sonar/api/resources | Récupération de la liste des projets analysés par Sonar. |
http://url-sonar/api/resources?resource=foo:bar&metrics=blocker_violations,ncloc | Récupération de la valeur des métriques blocker violations (nombre de violations bloquantes) et ncloc (nombre de lignes de code) sur le projet foo:bar. |
http://url-sonar/api/reviews?resource=foo:bar | Récupération de la liste des revues de code pour le projet foo:bar. |
http://url-sonar/api/reviews?resource=foo:bar&format=json | Récupération de la liste des revues de code pour le projet foo:bar mais au format JSON. |
http://url-sonar/api/rules | Liste des règles en vigueur. |
http://url-sonar/api/sources?resource=foo:bar:my.package.SomeClass&format=txt | Récupération (sous format texte) du code source (si celui-ci est accessible) de la classe my.package.SomeClass du projet foo:bar. |
D'autres exemples sont disponibles sur le wiki de Sonar.
Notons également que Sonar propose une petite application Java pour simplifier les appels vers ces web services. On trouvera davantage d'informations ici.