Cet outil pour les bases de code Java vous aidera à identifier ce que vous devez d'abord refacter:
Il analyse votre référentiel GIT et fonctionne:
L'analyse du cycle est effectuée en fonction des types de champs de classe et des types de signature de méthode pour le moment (plus à venir!).
Les graphiques générés dans le rapport seront similaires à celui-ci: 
Le changement pour exiger Java 11 est nécessaire pour traiter la vulnérabilité CVE-2023-4759 en JGIT
L'analyse de la base de code Java 21 est prise en charge!
Exécutez la commande suivante à partir de la racine de votre projet (le code source n'a pas besoin d'être construit):
mvn org.hjug.refactorfirst.plugin:refactor-first-maven-plugin:0.6.1:htmlReport Affichez le rapport sur target/site/refactor-first-report.html
Cela générera un rapport HTML simplifié (pas de graphiques ou d'images) comme sortie d'une étape d'action GitHub
mvn -B clean test
org.hjug.refactorfirst.plugin:refactor-first-maven-plugin:0.6.1:simpleHtmlReport
&& echo " $( cat target/site/refactor-first-report.html ) " >> $GITHUB_STEP_SUMMARYAjoutez ce qui suit à votre projet dans la section Build. Les showdetails montreront des mesures et des classements de classe à Dieu dans le tableau généré.
< build >
< plugins >
...
< plugin >
< groupId >org.hjug.refactorfirst.plugin</ groupId >
< artifactId >refactor-first-maven-plugin</ artifactId >
< version >0.6.1</ version >
<!-- optional -->
< configuration >
< showDetails >false</ showDetails >
</ configuration >
</ plugin >
...
</ plugins >
</ build > Ajoutez ce qui suit à votre projet dans la section des rapports.
Un rapport RefactorFirst apparaîtra dans le rapport du site lorsque vous exécutez mvn site
< reporting >
< plugins >
...
< plugin >
< groupId >org.hjug.refactorfirst.plugin</ groupId >
< artifactId >refactor-first-maven-plugin</ artifactId >
< version >0.6.1</ version >
</ plugin >
...
</ plugins >
</ reporting >Si vous voyez une erreur similaire à
Execution default-site of goal org.apache.maven.plugins:maven-site-plugin:3.3:site failed: A required class was missing while executing org.apache.maven.plugins:maven-site-plugin:3.3:site: org/apache/maven/doxia/siterenderer/DocumentContent
Vous devrez ajouter ce qui suit à votre pom.xml:
< build >
< plugins >
< plugin >
< groupId >org.apache.maven.plugins</ groupId >
< artifactId >maven-site-plugin</ artifactId >
< version >3.12.1</ version >
</ plugin >
< plugin >
< groupId >org.apache.maven.plugins</ groupId >
< artifactId >maven-project-info-reports-plugin</ artifactId >
< version >3.4.5</ version >
</ plugin >
</ plugins >
</ build >Je voudrais créer un plugin Gradle et (éventuellement) prendre en charge les projets non conventionnels à l'avenir, mais en attendant, vous pouvez créer un fichier POM fac du même dans le même répertoire que votre répertoire .git:
< project xmlns = " http://maven.apache.org/POM/4.0.0 " xmlns : xsi = " http://www.w3.org/2001/XMLSchema-instance "
xsi : schemaLocation = " http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd " >
< modelVersion >4.0.0</ modelVersion >
< groupId >com.mycompany.app</ groupId >
< artifactId >my-app</ artifactId >
< version >1.0-SNAPSHOT</ version >
</ project >puis (en supposant que maven est installé)
mvn org.hjug.refactorfirst.plugin:refactor-first-maven-plugin:0.6.1:htmlReport Affichez le rapport sur target/site/refactor-first-report.html
Une fois le plugin terminé l'exécution (cela peut prendre un certain temps pour une grande / ancienne base de code), ouvrez la cible de fichier / site / refactor-First-Report.html dans la racine du projet. Il contiendra un graphique similaire à celui ci-dessus, et une table qui répertorie les classes de Dieu dans l'ordre recommandé qu'ils devraient être refactorisés. Les classes en haut à gauche du graphique sont les plus faciles à refactor tout en ayant le plus grand impact positif à la productivité de l'équipe.
Si des classes hautement couplées sont détectées, un graphique et une table répertoriant des classes hautement couplés seront générés.
Travaillez avec votre propriétaire de produit pour hiérarchiser la dette technique qui a été identifiée. Il peut être utile de l'expliquer comme une valeur négative cachée qui ralentit la pordinativité de l'équipe.
Si vous avez Intellij Ultimate, vous pouvez installer le plugin de diagramme de référence de méthode pour vous aider à déterminer comment les classes de dieu identifiées et les classes hautement couplées peuvent être refactorisées.
Ce plugin fonctionnera sur des projets Maven à module unique et multi-modules qui ont une disposition de projet maven typique.
Cet outil est basé sur le document de priorisation des opportunités d'investissement de la dette de conception par Nico Zazworka, Carolyn Seaman et Forrest Shull. La présentation basée sur le document est disponible sur https://resources.sei.cmu.edu/asset_files/presentation/2011_017_001_516911.pdf
Il y a encore beaucoup à faire. Vos commentaires et votre collaboration seraient grandement appréciés sous la forme de demandes de fonctionnalités, de soumissions de bogues et de RP.
Si vous trouvez ce plugin utile, veuillez jouer ce référentiel et partager avec vos amis et collègues et sur les réseaux sociaux.
Si vous êtes un utilisateur de la version 0.1.0 ou 0.1.1, vous remarquerez peut-être que la liste des classes de Dieu trouvée par le plugin a changé. Cela est dû aux changements de PMD.