Maven : assurance qualité du code en JAVA

Depuis que j’ai découvert le blog de Frederic Hardy et son outil Atoum pour les tests unitaires en PHP, je m’intéresse beaucoup à l’assurance qualité dans les codes.

Dans le cadre d’un projet scolaire, j’utilise le langage Java pour créer un outil qui fait tourner des algorithmes génétiques à la manière de jgap. Pour ce projet, nous avons à disposition un ensemble d’outils tels que redmine (voir comment intégrer Redmine à Netbeans) ou bien Maven. Au départ nous utilisions Maven surtout pour la gestion des dépendances. En effet, nous avons eu besoin des bibliothèques externes (JFreeChart par exemple) et cela était nécessaire de ne pas se perdre dans nos dossiers avec des classpath locaux.

Ensuite, nous utilisions aussi JUnit pour les tests unitaires. L’avantage alors c’est que Maven, à chaque compilation, exécute les tests : nombreuses heures de débug économisées.

Mais d’ici peu, la deadline arrivera, et comme notre nombre de lignes de code à la minute ne cesse d’augmenter, on s’est rendu compte que parfois nos codes étaient… douteux. J’ai donc pris quelques minutes pour chercher des outils d’analyse du code, j’ai trouvé PMD et FindBugs qui sont très performants. Je les ai fait tourner en parallèle à mon code et finalement, je ne faisais que perdre du temps. Les rapports étaient sur deux logiciels différents, l’ordinateur avait même fini par ralentir (bon, OK, il vieillit quand même). J’ai donc décidé qu’il fallait absolument intégrer ça à Netbeans, ou au moins à Maven. Et j’ai réussi. J’ai par la même découvert des fonctionnalités que je n’attendais pas sur Maven.

Voici la marche à suivre :

Configuration de maven :

Pour configurer ce genre de comportement dans Maven, il faut aller toujours au POM. Dans Netbeans, cela se trouve dans le dossier “ProjectFiles”, si vous utilisez un éditeurs tiers, c’est simplement dans le dossier racine de votre projet. Le POM est écrit en XML (pour une meilleure portabilité).

Configurer l’insertion de plugin

Tout d’abord, il peut être intéressant de séparer la simple configuration des plugins qu’on utilisera avec la manière dont on les utilisera. Cela permet aussi d’éviter la répétition de certains bouts de code tels que le nom de la version, la force de la recherche etc.
Pour cela Maven possède une balise qui s’appelle [icode lang=”xml”][/icode].

Pour ma part je n’ai configuré de cette manière que la partie “findbugs” (A mettre à l’intérieur de la balise build):

 

Il faut avoir un but dans la vie

Maven vous permet de faire tourner des scripts indépendamment les uns des autres à la manière de Ant ou makefile. Sauf qu’à la place de “dépendance” on appelle ça un “but”. Ces “goals” sont codés dans les plugins associés. C’est pourquoi il va falloir copier une partie du code précédant au sein de la balise build :

Bon, maintenant on peut faire tourner des “goals” tel que pmd:pmd ou findbugs:gui. Nous y reviendront dans la partie suivante.
Cela n’est pas indispensable, mais si seul un raport vous intéresse sur le coup, ça peut servir de ne lancer que le goal affilié.

La partie Reporting

Nous, ce qu’on veut, ce sont des raport à propos de l’analyse de nos codes. Mieux, il serait avantageux que ces rapports soient lisibles par d’autres plugins qui sont capables de bien les présenter.
Comme “faire un raport” est une tâche à part du “build”, il existe donc une autre tâche configurable dans maven qui s’appelle “reporting”. Il suffit alors de dire quels sont les rapports que l’on veut mettre :

Lancer l’outil d’analyse :

Avant toute chose, faite un build complet du projet, plusieurs outils analyseront votre JAR donc il faut absolument qu’il soit à jour !

Nous avons vu qu’il existe des goals dans Maven. Pour unifier la présentation des rapports, nous allons utiliser un goal inclus de base qui s’appelle site:site.

Si vous êtes en ligne de commande, tapez mvn site:site. Si, comme moi, vous êtes sur netbeans, click droit sur le projet, puis Custom puis Goals. Entrez “site:site” dans la première textbox et cochez, si vous désirez garder un raccourcis la checkbox “Remember”.

maven_goals maven_goals_confOuvrez l’URL qu’on vous propose et savourez. Vos rapport se situent dans l’onglet “reporting”.

Captures d’écran :

site_home pmd_result

One thought on “Maven : assurance qualité du code en JAVA

  1. Pingback: Tester un logiciel, le cas (d’école) de la ZEP-12 | Blog de françois DAMBRINE

Leave a Reply

Your email address will not be published. Required fields are marked *