KX
Messages postés16752Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention31 août 2024
-
19 mai 2022 à 13:45
En programmation, faire une application qui fonctionne n'est pas suffisant.
Améliorer la qualité du code est très important pour faciliter le développement des corrections et évolutions.
On peut afficher le site généré en ouvrant le fichier
target/site/index.html
Par défaut le site contient principalement des informations techniques sur l'architecture Maven du projet (dépendances, plugins, etc.) nous allons l'enrichir avec des rapports d'analyse du code générés par des plugins Maven.
Rapports d'analyses
Ci-dessous un extrait de pom.xml à intégrer au votre. Chaque plugin étant indépendant vous pouvez supprimer ceux dont les rapports ne vous intéressent pas (ou en ajouter d'autres).
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>4.0.0-M1</version>
</plugin>
<plugin>
<!-- The Failsafe Plugin is designed to run integration tests while the Surefire Plugin is designed to run unit tests. -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.0.0-M6</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<!-- The JXR Plugin generates a cross-reference of the project's sources. -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<!-- The Javadoc Plugin generates javadocs using the Javadoc tool. -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.4.0</version>
<configuration>
<additionalparam>-Xdoclint:none</additionalparam>
</configuration>
</plugin>
<plugin>
<!-- The Surefire Report Plugin generates reports for unit and integration tests. -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>3.0.0-M6</version>
</plugin>
<plugin>
<!-- The Checkstyle Plugin generates a report regarding the code style used by the developers. -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.2</version>
</plugin>
<plugin>
<!-- The PMD plugin generates PMD and CPD reports using the PMD code analysis tool. -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.16.0</version>
<configuration>
<skipEmptyReport>false</skipEmptyReport>
<linkXref>true</linkXref>
<minimumTokens>50</minimumTokens>
</configuration>
</plugin>
</plugins>
</reporting>
Remarque : Les plugins utilisés ici sont donnés à titre d'exemples, il en existe de nombreux autres et il est également possible de créer ses propres rapports.
Pour générer la totalité des rapports ainsi configurés vous devez exécuter les tests unitaires et tests d'intégrations avant de générer le site. Par exemple avec
mvn verify site
Remarque : certains rapports peuvent ne pas apparaître sur le site en fonction de votre projet. Par exemple les résultats des tests unitaires ne sont pas générés si vous n'en avez pas...
Lecture des rapports
Dans le site généré, aller dans la catégorie Project Reports.
Source XRef
Ce rapport permet de visualiser dans le site le code source du projet.
Cette fonctionnalité sera particulièrement intéressante dans les rapports suivants où la détection d'anomalie pour une ligne de code pourra être visualisée dans son contexte.
Test Source Xref
Ce rapport est identique au précédent mais pour les classes de tests.
Rappel : dans un projet Maven par défaut les classes applicatives sont dans "src/main/java" et les classes de tests dans "src/test/java".
JavaDocs
Ce rapport affiche le site de documentation de la même manière que l'outil JavaDoc standard de Java.
Test JavaDocs
Ce rapport est identique au précédent mais pour les classes de tests.
Surefire Report
Ce rapport affiche le résultat des tests unitaires : succès ou échec avec leur temps d'exécution.
Failsafe Report
Ce rapport est identique au précédent mais pour les tests d'intégration.
Rappel : dans un projet Maven par défaut les noms des classes de tests unitaires terminent par "Test" et ceux des tests d'intégrations par "IT" (pour "Integration Test").
Checkstyle
Ce rapport affiche les violations aux règles de syntaxe standards en Java.
Ce rapport affiche les morceaux de codes dupliqués dans le projet.
Remarque : dans le pom.xml fourni plus haut c'est le paramètre
<minimumTokens>50</minimumTokens>
qui permet de déterminer à partir de quelle taille de code identique il faut remonter une alerte dans ce rapport.
PMD
Ce rapport affiche des alertes sur une mauvaise construction du code qui peut potentiellement entraîner des erreurs.
Remarque : les règles utilisées pour remonter ces erreurs peuvent être personnalisées. Le fonctionnement détaillé de chaque règle peut se trouver dans la documentation de PMD : https://pmd.github.io/latest/pmd_rules_java.html
Pour aller plus loin
Des outils plus avancés permettent d'agréger ces rapports, les afficher de manière plus synthétique, comparer des projets entre eux et suivre l'historique de ces erreurs.