Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Apache Maven
  3. Rapports Maven et mesure de la qualité
Extrait - Apache Maven Maîtrisez l'infrastructure d'un projet Java EE (2e édition)
Extraits du livre
Apache Maven Maîtrisez l'infrastructure d'un projet Java EE (2e édition) Revenir à la page d'achat du livre

Rapports Maven et mesure de la qualité

Présentation des rapports avec Maven 3

1. Introduction

Dans le développement logiciel, la gestion de la documentation en général est une donnée primordiale à la maintenance, au suivi et à l’évolution d’un projet.

La documentation a été abordée succinctement dans le chapitre précédent comme une composante de la livraison d’un projet. Apache Maven gère principalement cette documentation sous forme de rapports au format HTML. Elle fait donc partie intégrante de Maven, notamment lors du processus de Release présenté ultérieurement puisque le goal release:perform est configuré par défaut pour déployer le site web du projet lors de la fin de son traitement.

2. Les éléments du POM

La philosophie d’Apache Maven 3 reste la même concernant la documentation puisqu’elle est dédiée à un composant externe sous forme de plugin : le maven-site-plugin. Les éléments du POM qui sont utilisés pour la génération des rapports web et le déploiement du site web sont les suivants :

<project> 
 ... 
 <url>http://...</url> 
 ... 
 <distributionManagement> 
     ...  
     <site>...</site> 
 </distributionManagement> 
 
 <build> 
   <plugins> 
     <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-site-plugin</artifactId> 
     </plugin> 
   </plugins> 
 </build> 
 <reporting> 
   <plugins> 
     <plugin> 
       <groupId>...</groupId> 
       <artifactId>...</artifactId> 
       <configuration>...</configuration> 
     </plugin> 
     <plugin> 
       <groupId>...</groupId> 
       ...

Générer le site web du projet

1. Le cycle de vie pour le site du projet

Toute la notion de génération de documentation et de déploiement du site web est centralisée par Apache Maven dans le cycle de vie pour le site du projet.

Ce cycle définit quatre phases :

  • pre-site : initialisation avant la génération du site.

  • site : exécution des rapports du projet et génération du site en HTML.

  • post-site : finalisation de la génération du site.

  • deploy : déploiement du site sur un serveur web.

Comme le montre le schéma suivant, le maven-site-plugin est associé à ce cycle de vie :

images/06ep01.png

La documentation pour le maven-site-plugin est accessible à l’adresse : http://maven.apache.org/plugins/maven-site-plugin/

2. Le plugin de base pour la génération du site web

Le maven-site-plugin est déclaré dans sa version 3.7.1 dans le Corporate POM. Le plugin utilisé par défaut pour générer la base du site web du projet est le maven-project-info-reports-plugin.

Ce plugin va générer des pages HTML pour visualiser dans le site web toutes les informations déclarées dans les éléments du POM. La configuration de base est donc la suivante :

<project> 
 ... 
  <properties>  
     ... 
     <site.plugin.version>3.7.1</site.plugin.version> 
     <project.info.plugin.version>3.0.0</project.info.plugin.version> 
      ... 
  </properties> ...

Générer les rapports Apache Maven

1. Rapports liés au code source

a. Introduction et configuration

Les premiers rapports configurés sont liés au code source du projet avec, pour certains rapports, une analyse. Avant d’analyser le code des projets à partir de l’intégration continue et de penser à des actions de prévention, il est important de configurer les postes de développement avec les mêmes fichiers que ceux utilisés par Maven.

En effet, les rapports ne seront pas pertinents si les développeurs ne disposent pas des règles à respecter dans leur éditeur avant l’analyse.

L’environnement de développement est configuré pour Checkstyle et PMD.

Checkstyle

Checkstyle analyse le code source afin de vérifier que les conventions de code définies sur le projet sont respectées, comme la présence de Javadoc ou les conventions pour le nommage des attributs, des méthodes et des classes.

Checkstyle dispose d’un plugin pour Eclipse qui est disponible dans l’Eclipse MarketPlace.

Lorsque ce plugin est installé, un menu dédié à Checkstyle est disponible dans les préférences d’Eclipse. Il est ainsi possible d’importer un fichier spécifique au projet avec toutes les règles définies pour le projet.

images/06EP02N.png

PMD

PMD est un utilitaire qui analyse le code Java à partir de règles prédéfinies afin de détecter des sources de bogues potentiels dans le code telles que le code copier/coller ou des imbrications trop complexes.

Le site officiel de PMD est accessible à l’adresse https://pmd.github.io/.

Le plugin Eclipse pour PMD s’installe par l’ajout de l’adresse de l’Update Site :

 Allez dans le menu Help - Install new Software et saisissez l’adresse https://dl.bintray.com/pmd/pmd-eclipse-plugin/updates/ dans le champ Work with.

 Suivez la procédure d’installation.

 Dans le menu Window - Preferences, un menu PMD est disponible pour importer ou exporter des règles comme le montre l’écran suivant :

images/06EP03N.png

Export des règles d’analyse

Pour utiliser Checkstyle et PMD avec Maven, il est nécessaire de disposer de fichiers contenant les règles d’analyse. Ces fichiers peuvent être obtenus...

La mesure de la qualité des projets

1. Qu’est-ce que la mesure de qualité d’un projet ?

Les rapports web générés par Apache Maven permettent une première approche de la qualité des projets. Néanmoins, l’analyse de la qualité du code repose sur un ensemble de métriques plus complexes.

La qualité des codes sources ne permet toujours pas aujourd’hui de définir des mesures absolues pour discerner sans ambiguïté du code fautif. En effet, une mesure a un intérêt et une pertinence relatifs à un type d’architecture ou de codage. Il existe tout de même de bons indicateurs de bogues potentiels ou de code difficile à comprendre, maintenir ou faire évoluer.

Il est possible de classer les métriques et mesures en différentes catégories :

  • Les métriques portant sur le volume et la longueur des codes sources telles que la taille des classes Java, le nombre de lignes des méthodes ou le nombre de classes dans un package.

  • Les métriques portant sur la conception et la structure du code comme la complexité cyclomatique de Mc Cabe. Cette métrique est basée sur la représentation d’un code source sous forme d’un graphe en lien avec le nombre de cas nécessaires pour tester une méthode.

  • Les métriques portant sur les normes de codage (conventions de nommage) et le respect de l’architecture (noms des classes, méthodes, propriétés et variables, entre autres).

  • Les métriques issues de l’exécution du code et des tests unitaires : nombres de tests en erreur ou taux de couverture du code lors de l’exécution des tests unitaires.

2. La mesure de la qualité des projets Maven avec SonarQube

a. Présentation de SonarQube

SonarQube, précédemment Sonar, est une plate-forme open source de gestion de la qualité du code source pour les projets logiciels. Il est constitué de deux parties :

  • Un serveur (SonarQube Server) qui agrège les données collectées et les présente via une application web.

  • Un agent qui collecte les données (SonarQube Scanner).

Les sept axes de qualité sur lesquels Sonar se base...

En résumé

La mesure de la qualité des projets est une donnée importante dans la gestion des projets professionnels. Tous ces rapports peuvent servir de données contractuelles envers un client pour prouver que le projet respecte les normes de qualité. Ils doivent surtout permettre d’améliorer le logiciel grâce à la prévention de bogues et à l’analyse des points critiques du projet.

Le thème de la qualité logicielle est le dernier élément pour compléter le schéma de l’infrastructure d’un projet professionnel autour d’Apache Maven.

IMAGES/06EP16N.png