Documentation

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.

Découvrir toutes les fonctionnalités Ce que le plugin génère, analyse ou produit.
Fonctionnalités
Installation

Ajouter le plugin d'audit

pom.xml
<plugin>
<groupId>io.hexaglue</groupId>
<artifactId>hexaglue-maven-plugin</artifactId>
<version>6.1.1</version>
<extensions>true</extensions>
<configuration>
<basePackage>com.acme.shop</basePackage>
</configuration>
<dependencies>
<dependency>
<groupId>io.hexaglue.plugins</groupId>
<artifactId>hexaglue-plugin-audit</artifactId>
<version>3.1.1</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 de mvn compile ou mvn 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 Java ServiceLoader : il suffit de les ajouter ici pour qu'ils soient actifs.

Les projets utilisant Lombok sont pris en charge nativement depuis HexaGlue 6.0.0 : le delombok est injecté automatiquement avant l'analyse, aucune configuration spéciale n'est nécessaire côté plugin.

Vue d'ensemble d'un rapport d'audit HexaGlue (sample-basic, score 76/C)
Rapport d'audit HexaGlue : vue d'ensemble du rapport HTML généré pour sample-basic avec verdict 76/100, grade C, inventaire architectural et métriques
Configuration

Options Maven

La configuration de l'audit se fait via les paramètres <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.
OptionTypeDéfaut
basePackagestring(requis)
errorOnBlockerbooleantrue
errorOnCriticalbooleanfalse
failOnErrorbooleantrue
failOnUnclassifiedbooleanfalse
reportDirectorystring${project.build.directory}/hexaglue/reports
skipbooleanfalse
tolerantResolutionbooleanfalse
validationReportPathstring${project.build.directory}/hexaglue/reports/validation/validation-report.md
pom.xml : configuration de l'audit
<plugin>
<groupId>io.hexaglue</groupId>
<artifactId>hexaglue-maven-plugin</artifactId>
<version>6.1.1</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>3.1.1</version>
</dependency>
</dependencies>
</plugin>
mvn clean verify -Dhexaglue.skip=true
Configuration

Options YAML

Le fichier 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.
OptionTypeDéfaut
failOnErrorbooleantrue
errorOnBlockerbooleantrue
errorOnCriticalbooleanfalse
generateDocsbooleanfalse
hexaglue.yaml
plugins:
io.hexaglue.plugin.audit:
errorOnBlocker: true # Défaut
errorOnCritical: false # Défaut
generateDocs: false # Défaut
Contraintes

Contraintes DDD

Ces contraintes vérifient la conformité de votre modèle de domaine aux principes DDD.
IDNomSévérité
ddd:entity-identityIdentité des entitésCRITICAL
ddd:value-object-immutableImmuabilité des VOCRITICAL
ddd:aggregate-cycleCycles entre agrégatsBLOCKER
ddd:aggregate-repositoryRepository par agrégatMAJOR
ddd:aggregate-boundaryFrontières d'agrégatMAJOR
ddd:aggregate-consistencyCohérence d'agrégatMAJOR
ddd:domain-purityPureté du domaineMAJOR
ddd:event-namingNommage des événementsMINOR
Contraintes

Contraintes d'architecture hexagonale

Ces contraintes vérifient l'isolation des couches et le respect des patterns hexagonaux.
IDNomSévérité
hexagonal:dependency-directionDirection des dépendancesBLOCKER
hexagonal:port-interfacePorts = interfacesCRITICAL
hexagonal:dependency-inversionInversion de dépendanceCRITICAL
hexagonal:layer-isolationIsolation des couchesMAJOR
hexagonal:port-directionDirection des portsMAJOR
hexagonal:port-coverageCouverture des portsMAJOR
hexagonal:application-purityPureté applicativeMAJOR
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 (BLOCKER et CRITICAL) peuvent faire échouer la compilation, ce qui garantit que les violations graves sont corrigées avant le déploiement.
NiveauImpact sur le build
BLOCKERBuild échoue immédiatement, non contournable
CRITICALBuild échoue si errorOnCritical: true
MAJORAvertissement, le build continue
MINORInformation, faible priorité
Métriques

Métriques calculées

L'audit calcule 20 métriques de qualité architecturale regroupées en 5 familles. Chaque métrique a un seuil d'alerte configurable.
MétriqueCe qu'elle mesure
DDD et Domaine
domain.coverageProportion des types classifiés dans la couche domaine
domain.purityProportion des types du domaine sans dépendance d'infrastructure
ddd.value.object.ratioRatio de value objects par rapport aux types du domaine (entités + VO)
ddd.event.coverageProportion des agrégats émettant au moins un événement de domaine
ddd.aggregate.couplingNombre moyen de dépendances inter-agrégats
Agrégats
aggregate.avgSizeNombre moyen de méthodes par aggregate root
aggregate.boundaryProportion des entités encapsulées dans leur agrégat
aggregate.repository.coverageProportion des agrégats ayant un port repository
aggregate.coupling.efferentInstabilité moyenne des packages (couplage efférent)
Architecture hexagonale
hexagonal.adapter.independenceIndépendance des adapters entre eux (REST ne dépend pas de JPA)
Qualité du code
code.boilerplate.ratioProportion de code boilerplate (getters, setters, equals) dans le domaine
code.complexity.averageComplexité cyclomatique moyenne des méthodes du domaine
Modularité et structure
architecture.propagation.costCoût de propagation : impact moyen d'un changement sur le système
architecture.cyclicity.relativeProportion de types impliqués dans des cycles de dépendances
architecture.dependency.depthProfondeur maximale de la chaîne de dépendances
architecture.fan.out.maxDépendances sortantes du type le plus couplé
architecture.modularity.qModularité de Newman-Girvan (> 0.3 = bonne structure communautaire)
architecture.mmiIndex de maturité modulaire de Lilienthal (0-100)
architecture.visibility.averageVisibilité relative moyenne : ratio de types publics par package
architecture.cohesion.relationalCohésion relationnelle H : dépendances internes par package

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.

KPI Table : les 5 dimensions du score avec statuts On Target / At Risk / Below Target
Rapport d'audit HexaGlue : tableau KPI montrant les 5 dimensions (DDD, hexagonal, dépendances, couplage, cohésion) avec poids, scores et seuils colorés
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 target/hexaglue/reports/audit/.
FormatUsage
JSONConsommation programmatique, intégration avec des outils CI/CD
HTMLConsultation web, rapport partageable avec CSS intégré
MarkdownVersionnage Git, intégration GitHub, documentation
ConsoleAffichage terminal avec couleurs ANSI (toujours actif)

15 contraintes, 20 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.