เครื่องมือสำหรับฐานรหัส Java นี้จะช่วยให้คุณระบุสิ่งที่คุณควร refactor ก่อน:
มันสแกนที่เก็บ Git ของคุณและรัน:
การวิเคราะห์วัฏจักรจะดำเนินการตามประเภทของเขตข้อมูลคลาสและประเภทลายเซ็นวิธีการในเวลานี้ (เพิ่มเติมที่จะมา!)
กราฟที่สร้างในรายงานจะมีลักษณะคล้ายกับกราฟนี้: 
จำเป็นต้องมีการเปลี่ยนแปลงที่ต้องการ Java 11 เพื่อจัดการกับช่องโหว่ CVE-20123-4759 ใน JGIT
รองรับการวิเคราะห์ Java 21 Codebase!
เรียกใช้คำสั่งต่อไปนี้จากรูทของโครงการของคุณ (ไม่จำเป็นต้องสร้างซอร์สโค้ด):
mvn org.hjug.refactorfirst.plugin:refactor-first-maven-plugin:0.6.1:htmlReport ดูรายงานที่ target/site/refactor-first-report.html
สิ่งนี้จะสร้างรายงาน HTML ที่ง่ายขึ้น (ไม่มีกราฟหรือรูปภาพ) เป็นเอาต์พุตของขั้นตอนการกระทำของ 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_SUMMARYเพิ่มสิ่งต่อไปนี้ในโครงการของคุณในส่วนงานสร้าง ShowDetails จะแสดงตัวชี้วัดและการจัดอันดับของ God Class ในตารางที่สร้างขึ้น
< 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 > เพิ่มสิ่งต่อไปนี้ในโครงการของคุณในส่วนรายงาน
รายงาน RefactorFirst จะปรากฏในรายงานไซต์เมื่อคุณเรียกใช้ 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 >หากคุณเห็นข้อผิดพลาดคล้ายกับ
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 และ (อาจ) สนับสนุนโครงการที่ไม่เป็นทางการในอนาคต แต่ในระหว่างนี้คุณสามารถสร้างไฟล์ POM จำลองในไดเรกทอรีเดียวกับไดเรกทอรี. 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 >และจากนั้น (สมมติว่าติดตั้ง Maven) วิ่ง
mvn org.hjug.refactorfirst.plugin:refactor-first-maven-plugin:0.6.1:htmlReport ดูรายงานที่ target/site/refactor-first-report.html
เมื่อปลั๊กอินเสร็จสิ้นการดำเนินการ (อาจใช้เวลาสักครู่สำหรับ codebase ขนาดใหญ่/เก่า) ให้เปิด เป้าหมายไฟล์/ไซต์/refactor-first-report.html ในรูทของโครงการ มันจะมีกราฟที่คล้ายกับกราฟด้านบนและตารางที่แสดงรายการคลาสพระเจ้าตามลำดับที่แนะนำว่าควรได้รับการปรับโครงสร้างใหม่ ชั้นเรียนที่อยู่ด้านบนซ้ายของกราฟเป็นวิธีที่ง่ายที่สุดในการ refactor ในขณะเดียวกันก็มีผลกระทบเชิงบวกที่ใหญ่ที่สุดต่อการเพิ่มผลผลิตของทีม
หากตรวจพบคลาสที่มีคู่สูงจะมีการสร้างคลาสกราฟและตารางที่มีการสร้างคลาสคู่สูงในชั้นเรียนสูง
ทำงานร่วมกับเจ้าของผลิตภัณฑ์ของคุณเพื่อจัดลำดับความสำคัญของหนี้ทางเทคนิคที่ได้รับการระบุ มันอาจช่วยอธิบายได้ว่าเป็นค่าลบที่ซ่อนอยู่ซึ่งเป็นการชะลอตัวของทีม
หากคุณมี Intellij Ultimate คุณสามารถติดตั้งปลั๊กอินไดอะแกรมอ้างอิงวิธีการเพื่อช่วยให้คุณกำหนดว่าคลาสพระเจ้าที่ระบุและคลาสคู่ที่สามารถปรับเปลี่ยนได้อย่างไร
ปลั๊กอินนี้จะทำงานได้ทั้งในโมดูลเดี่ยวและโครงการ Maven หลายโมดูลที่มีเค้าโครงโครงการ Maven ทั่วไป
เครื่องมือนี้ขึ้นอยู่กับ การจัดลำดับความสำคัญของโอกาสในการลงทุนการลงทุน โดย Nico Zazworka, Carolyn Seaman และ Forrest Shull งานนำเสนอที่ใช้กระดาษมีอยู่ที่ https://resources.sei.cmu.edu/asset_files/presentation/2011_017_001_516911.pdf
ยังมีอีกมากที่ต้องทำ ความคิดเห็นและการทำงานร่วมกันของคุณจะได้รับการชื่นชมอย่างมากในรูปแบบของคำขอคุณสมบัติการส่งข้อผิดพลาดและ PRS
หากคุณพบว่าปลั๊กอินนี้มีประโยชน์โปรดแสดงที่เก็บนี้และแบ่งปันกับเพื่อนและเพื่อนร่วมงานของคุณและบนโซเชียลมีเดีย
หากคุณเป็นผู้ใช้เวอร์ชัน 0.1.0 หรือ 0.1.1 คุณอาจสังเกตเห็นว่ารายการคลาสพระเจ้าที่ปลั๊กอินพบมีการเปลี่ยนแปลง นี่เป็นเพราะการเปลี่ยนแปลงใน PMD