lundi 4 mars 2013

PMD: Ajouter une régle XPath dans Sonar

Sonar utilise plusieurs outils pour effectuer ses mesures de qualité de code. Malgré les ~1000 règles utilisées, il est parfois nécessaire de rajouter nos propres règles suivant les "bonnes pratiques" que l'on a mis en place.
Un des outils qu'il utilise est PMD et celui-ci permet facilement de rajouter une règle en se servant du mécanisme des XPath.

Un peu de théorie

Sonar :
Sonar est un logiciel libre permettant de mesurer la qualité du code source sur les projets de développement java. Sonar est distribué selon les termes de la licence LGPL v3.

PMD :
PMD est un framework qui permet d'analyser le code source Java. Il contient un certain nombre de règles qui assure la qualité de code : le code inutile, les imbrications trop complexes... Il permet d'obtenir le résultat par le biais d'un rapport.

PMD utilise l'AST (Abstract Syntax Tree), plus exactement le Java AST pour exécuter ces règles.

La pratique

Un tutorial sur l'ajout de règle via XPath est proposé sur le site de PMD : http://pmd.sourceforge.net/pmd-5.0.2/xpathruletutorial.html. Mais celui-ci reste très basique. De plus, il est fastidieux de tester notre XPath directement dans Sonar.

PMD Rule Designer

Un outil, fort pratique, a été mis à disposition par l'équipe de PMD pour nous permettre d'écrire et de tester nos nouvelles règles. Celui-ci est fourni avec les binaires de PMD. Sinon un package exécutable a été fait par Usman Ismail sur le site http://www.techtraits.com. On peut le télécharger ici.
Cette outil prend un code source (ctrl-c, ctrl-v) et montre son équivalent en AST sous forme d'arbre ce qui permet de construire son XPath sans forcément connaitre les noms de tous les éléments possible et ensuite de le tester sur ce même code.

PMD Rule Designer

Source : Sonar (Wikipédia),PMD (Wikipédia), Custom PMD rules using XPath