Esta ferramenta para bases de código Java ajudará você a identificar o que você deve refatorar primeiro:
Ele digitaliza seu repositório Git e executa:
A análise do ciclo é realizada com base nos tipos de campo de classe e na assinatura do método no momento (mais por vir!).
Os gráficos gerados no relatório serão semelhantes a este: 
A mudança para exigir Java 11 é necessária para lidar com a vulnerabilidade CVE-2023-4759 em JGit
A análise Java 21 CodeBase é suportada!
Execute o seguinte comando da raiz do seu projeto (o código -fonte não precisa ser construído):
mvn org.hjug.refactorfirst.plugin:refactor-first-maven-plugin:0.6.1:htmlReport Veja o relatório em target/site/refactor-first-report.html
Isso gerará um relatório HTML simplificado (sem gráficos ou imagens) como a saída de uma etapa de ação do 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_SUMMARYAdicione o seguinte ao seu projeto na seção Build. O ShowDetails mostrará as métricas e rankings da classe de Deus na tabela gerada.
< 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 > Adicione o seguinte ao seu projeto na seção Relatórios.
Um relatório RefactorFirst será exibido no relatório do site quando você executar 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 >Se você vir um erro semelhante a
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
Você precisará adicionar o seguinte ao seu 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 >Gostaria de criar um plug-in gradle e (possivelmente) apoiar projetos não convencionais no futuro, mas, enquanto isso, você pode criar um arquivo de POM fictício no mesmo diretório do seu diretório .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 >e então (assumindo que o maven está instalado) executar
mvn org.hjug.refactorfirst.plugin:refactor-first-maven-plugin:0.6.1:htmlReport Veja o relatório em target/site/refactor-first-report.html
Depois que o plug-in terminar a execução (pode demorar um pouco para uma base de código grande/antiga), abra o destino do arquivo/site/refactor-primeiro-report.html na raiz do projeto. Ele conterá um gráfico semelhante ao acima e uma tabela que lista as classes de Deus na ordem recomendada que elas devem ser refatórias. As aulas no canto superior esquerdo do gráfico são as mais fáceis de refatorar, além de ter o maior impacto positivo para a produtividade da equipe.
Se classes altamente acopladas forem detectadas, um gráfico e a tabela listando classes altamente acopladas serão geradas.
Trabalhe com o proprietário do seu produto para priorizar a dívida técnica que foi identificada. Pode ajudar a explicá -lo como um valor negativo oculto que está diminuindo a porcentagem da equipe da equipe.
Se você possui o Intellij Ultimate, pode instalar o plug -in de diagrama de referência de método para ajudá -lo a determinar como as classes de Deus identificadas e as classes altamente acopladas podem ser refatórias.
Este plug-in funcionará nos projetos Maven de módulo único e de vários módulos que possuem um layout típico do projeto Maven.
Esta ferramenta é baseada no artigo priorizando as oportunidades de investimento da dívida de design de Nico Zazworka, Carolyn Seaman e Forrest Shull. A apresentação baseada no artigo está disponível em https://resources.sei.cmu.edu/asset_files/presentation/2011_017_001_516911.pdf
Ainda há muito a ser feito. Seus comentários e colaboração seriam muito apreciados na forma de solicitações de recursos, envios de bugs e PRs.
Se você achar esse plug -in útil, por favor, estrela este repositório e compartilhe com seus amigos e colegas e nas mídias sociais.
Se você é um usuário da versão 0.1.0 ou 0.1.1, poderá notar que a lista de classes de Deus encontrada pelo plug -in mudou. Isso se deve a alterações no PMD.