Java 코드베이스를위한이 도구는 먼저 리팩터링해야 할 사항을 식별하는 데 도움이됩니다.
git 저장소를 스캔하고 실행합니다.
사이클 분석은 현재 클래스 필드 유형 및 방법 시그니처 유형을 기반으로 수행됩니다 (앞으로 더 많이!).
보고서에서 생성 된 그래프는 이것과 유사하게 보일 것입니다. 
JGIT에서 취약성 CVE-2023-4759를 해결하려면 Java 11을 요구하는 변경이 필요합니다.
Java 21 코드베이스 분석이 지원됩니다!
프로젝트의 루트에서 다음 명령을 실행하십시오 (소스 코드를 구축 할 필요는 없습니다) :
mvn org.hjug.refactorfirst.plugin:refactor-first-maven-plugin:0.6.1:htmlReport target/site/refactor-first-report.html 에서 보고서를 봅니다
이렇게하면 GitHub 작업 단계의 출력으로 단순화 된 HTML 보고서 (그래프 또는 이미지 없음)가 생성됩니다.
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_SUMMARY빌드 섹션에서 프로젝트에 다음을 추가하십시오. ShowDetails는 생성 된 테이블에 God Class Metrics와 Rankings를 표시합니다.
< 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 > 보고서 섹션에서 프로젝트에 다음을 추가하십시오.
mvn site 실행할 때 RefactorFirst 보고서가 사이트 보고서에 표시됩니다.
< reporting >
< plugins >
...
< plugin >
< groupId >org.hjug.refactorfirst.plugin</ groupId >
< artifactId >refactor-first-maven-plugin</ artifactId >
< version >0.6.1</ version >
</ plugin >
...
</ plugins >
</ reporting >비슷한 오류가 표시되면
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
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 >Gradle 플러그인을 만들고 향후 비 전통적인 프로젝트를 지원하고 싶지만 그 동안 .git 디렉토리와 동일한 디렉토리에서 더미 POM 파일을 만들 수 있습니다.
< 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 >그런 다음 (Maven이 설치되었다고 가정) 실행됩니다
mvn org.hjug.refactorfirst.plugin:refactor-first-maven-plugin:0.6.1:htmlReport target/site/refactor-first-report.html 에서 보고서를 봅니다
플러그인이 실행되면 (대형/오래된 코드베이스의 경우 시간이 걸릴 수 있음) 프로젝트의 루트에서 파일 대상/사이트/Refactor-First-Report.html을 엽니 다. 여기에는 위와 유사한 그래프와 유사한 그래프가 포함되어 있으며, 추천 순서로 신의 수업을 나열하는 테이블이 포함되어야합니다. 그래프 왼쪽 상단에있는 클래스는 리팩터가 가장 쉽고 팀 생산성에 가장 큰 긍정적 인 영향을 미칩니다.
고도로 결합 된 클래스가 감지되면 고도로 결합 된 클래스를 나열하는 그래프 및 테이블이 생성됩니다.
제품 소유자와 협력하여 확인 된 기술 부채의 우선 순위를 정하십시오. 그것은 팀의 관문을 늦추는 숨겨진 부정적인 값으로 설명하는 데 도움이 될 수 있습니다.
Intellij Ultimate가있는 경우 메소드 참조 다이어그램 플러그인을 설치하여 식별 된 God 클래스 및 고도로 결합 된 클래스를 어떻게 재현 할 수 있는지 결정할 수 있습니다.
이 플러그인은 일반적인 Maven 프로젝트 레이아웃이있는 단일 모듈 및 다중 모듈 Maven 프로젝트에서 작동합니다.
이 도구는 Nico Zazworka, Carolyn Seaman 및 Forrest Shull의 디자인 부채 투자 기회를 우선시하는 논문을 기반으로합니다. 이 논문을 기반으로 한 프레젠테이션은 https://resources.sei.cmu.edu/asset_files/presentation/2011_017_001_516911.pdf에서 확인할 수 있습니다.
아직해야 할 일이 많이 있습니다. 피드백 및 협업은 기능 요청, 버그 제출 및 PR의 형태로 크게 높이 평가됩니다.
이 플러그인이 유용하다고 생각되면이 저장소를 주연시키고 친구 및 동료 및 소셜 미디어와 공유하십시오.
버전 0.1.0 또는 0.1.1 버전의 사용자 인 경우 플러그인에서 발견 한 신 수업 목록이 변경되었음을 알 수 있습니다. 이것은 PMD의 변화 때문입니다.