DocumentationPlugin Audit
Plugin Audit
Contraintes, métriques et formats de rapport.
Référence complète du plugin d'audit HexaGlue : options de configuration, contraintes vérifiées, métriques calculées et formats de rapport.
Installation
Ajouter le plugin d'audit
<plugin> <groupId>io.hexaglue</groupId> <artifactId>hexaglue-maven-plugin</artifactId> <version>5.1.0</version> <extensions>true</extensions> <configuration> <basePackage>com.acme.shop</basePackage> </configuration> <dependencies> <dependency> <groupId>io.hexaglue.plugins</groupId> <artifactId>hexaglue-plugin-audit</artifactId> <version>2.1.0</version> </dependency> </dependencies></plugin>L'audit s'exécute automatiquement lors de la phase verify (mvn verify). Le rapport est généré dans target/hexaglue/reports/audit/.
Trois éléments clés dans cette configuration :
<extensions>true</extensions>: active le binding automatique aux phases Maven. Les goals HexaGlue se déclenchent sans configuration supplémentaire lors demvn compileoumvn verify.<basePackage>: package racine à analyser. Seules les classes de ce package et de ses sous-packages sont classifiées par HexaGlue.- Le plugin d'audit est déclaré comme
<dependency>du plugin Maven, pas du projet. HexaGlue découvre automatiquement les plugins via le mécanisme JavaServiceLoader: il suffit de les ajouter ici pour qu'ils soient actifs.

Configuration
Options Maven
La configuration de l'audit se fait via les paramètres
Ces paramètres contrôlent le comportement du build (échec sur violations) et l'emplacement des rapports générés.
Le paramètre
<configuration> du plugin Maven dans le pom.xml.Ces paramètres contrôlent le comportement du build (échec sur violations) et l'emplacement des rapports générés.
Le paramètre
skip peut aussi être passé en ligne de commande via -Dhexaglue.skip=true.| Option | Type | Défaut |
|---|---|---|
basePackage | string | (requis) |
failOnError | boolean | true |
errorOnBlocker | boolean | true |
errorOnCritical | boolean | false |
reportDirectory | string | ${project.build.directory}/hexaglue/reports |
skip | boolean | false |
failOnUnclassified | boolean | false |
validationReportPath | string | ${project.build.directory}/hexaglue/reports/validation/validation-report.md |
<plugin> <groupId>io.hexaglue</groupId> <artifactId>hexaglue-maven-plugin</artifactId> <version>5.1.0</version> <extensions>true</extensions> <configuration> <basePackage>com.acme.shop</basePackage> <failOnError>true</failOnError> <errorOnBlocker>true</errorOnBlocker> <errorOnCritical>false</errorOnCritical> <reportDirectory>${project.build.directory}/hexaglue/reports</reportDirectory> </configuration> <dependencies> <dependency> <groupId>io.hexaglue.plugins</groupId> <artifactId>hexaglue-plugin-audit</artifactId> <version>2.1.0</version> </dependency> </dependencies></plugin>mvn clean verify -Dhexaglue.skip=trueConfiguration
Options YAML
Le fichier
Les options ci-dessous se configurent dans la section
Les 3 propriétés de failure (
hexaglue.yaml, placé à la racine du projet (à côté du pom.xml), centralise la configuration de HexaGlue et de tous ses plugins.Les options ci-dessous se configurent dans la section
plugins.io.hexaglue.plugin.audit: du fichier YAML.Les 3 propriétés de failure (
failOnError, errorOnBlocker, errorOnCritical) sont unifiées entre Maven et YAML. Précédence : Maven POM / -D > YAML > defaults.| Option | Type | Défaut |
|---|---|---|
failOnError | boolean | true |
errorOnBlocker | boolean | true |
errorOnCritical | boolean | false |
generateDocs | boolean | false |
plugins: io.hexaglue.plugin.audit: errorOnBlocker: true # Défaut errorOnCritical: false # Défaut generateDocs: false # DéfautContraintes
Contraintes DDD
Ces contraintes vérifient la conformité de votre modèle de domaine aux principes DDD.
| ID | Nom | Sévérité |
|---|---|---|
ddd:entity-identity | Identité des entités | CRITICAL |
ddd:value-object-immutable | Immuabilité des VO | CRITICAL |
ddd:aggregate-cycle | Cycles entre agrégats | BLOCKER |
ddd:aggregate-repository | Repository par agrégat | MAJOR |
ddd:aggregate-boundary | Frontières d'agrégat | MAJOR |
ddd:aggregate-consistency | Cohérence d'agrégat | MAJOR |
ddd:domain-purity | Pureté du domaine | MAJOR |
ddd:event-naming | Nommage des événements | MINOR |
Contraintes
Contraintes d'architecture hexagonale
Ces contraintes vérifient l'isolation des couches et le respect des patterns hexagonaux.
| ID | Nom | Sévérité |
|---|---|---|
hexagonal:dependency-direction | Direction des dépendances | BLOCKER |
hexagonal:port-interface | Ports = interfaces | CRITICAL |
hexagonal:dependency-inversion | Inversion de dépendance | CRITICAL |
hexagonal:layer-isolation | Isolation des couches | MAJOR |
hexagonal:port-direction | Direction des ports | MAJOR |
hexagonal:port-coverage | Couverture des ports | MAJOR |
hexagonal:application-purity | Pureté applicative | MAJOR |
Sévérités
Niveaux de sévérité
Chaque contrainte a un niveau de sévérité qui détermine son impact sur le build Maven.
Les deux niveaux les plus élevés (
Les deux niveaux les plus élevés (
BLOCKER et CRITICAL) peuvent faire échouer la compilation, ce qui garantit que les violations graves sont corrigées avant le déploiement.| Niveau | Impact sur le build |
|---|---|
| BLOCKER | Build échoue immédiatement, non contournable |
| CRITICAL | Build échoue si errorOnCritical: true |
| MAJOR | Avertissement, le build continue |
| MINOR | Information, faible priorité |
Métriques
Métriques calculées
L'audit calcule 8 métriques de qualité architecturale. Chaque métrique a un seuil d'alerte configurable.
| Métrique | Ce qu'elle mesure |
|---|---|
domain.coverage | Proportion des types classifiés dans la couche domaine |
domain.purity | Proportion des types du domaine sans dépendance d'infrastructure |
aggregate.avgSize | Nombre moyen de méthodes par agrégat. Au-delà de 20, un refactoring est recommandé. |
aggregate.boundary | Proportion des entités correctement encapsulées dans leur agrégat |
aggregate.repository.coverage | Proportion des agrégats ayant un port repository |
aggregate.coupling.efferent | Couplage moyen entre agrégats. Plus il est bas, plus les agrégats sont indépendants. |
code.boilerplate.ratio | Proportion de code boilerplate (getters, setters, equals) dans les types du domaine |
code.complexity.average | Complexité cyclomatique moyenne des méthodes du domaine |
La métrique domain.purity détecte les imports d'infrastructure dans le domaine : JPA (javax.persistence, jakarta.persistence), Spring (org.springframework), Hibernate, Jackson, JDBC, SDKs cloud (AWS, Azure, GCP), messaging (Kafka, RabbitMQ), et les frameworks web/validation.

Rapports
Formats de sortie
L'audit produit un rapport dans 3 formats de fichier, générés par défaut à chaque exécution.
La sortie console (avec couleurs ANSI) est toujours active en complément. Les fichiers sont générés dans
La sortie console (avec couleurs ANSI) est toujours active en complément. Les fichiers sont générés dans
target/hexaglue/reports/audit/.| Format | Usage |
|---|---|
| JSON | Consommation programmatique, intégration avec des outils CI/CD |
| HTML | Consultation web, rapport partageable avec CSS intégré |
| Markdown | Versionnage Git, intégration GitHub, documentation |
| Console | Affichage terminal avec couleurs ANSI (toujours actif) |
15 contraintes, 8 métriques, un rapport.
Configurez l'audit en quelques lignes.
Voyez les résultats de l'audit sur un projet réel ou explorez les contraintes et métriques disponibles.