คำสั่งกราฟ
codeknit มีคำสั่งกราฟสำหรับการแสดงภาพโครงสร้าง การวิเคราะห์อัตโนมัติ และการรวมกราฟการพึ่งพาปัจจุบันกับประวัติการเปลี่ยนแปลงของ Git
graph show
หัวข้อที่มีชื่อว่า “graph show”สร้างกราฟแบบ HTML ที่สามารถโต้ตอบได้ของโค้ดเบสของคุณ
codeknit graph show <input-path>คำสั่งนี้จะทำการแยกวิเคราะห์โค้ดเบสของคุณและสร้างไฟล์ HTML ที่สามารถใช้งานได้ด้วยตัวเองพร้อมกับการแสดงภาพกราฟแบบโต้ตอบ สัญลักษณ์ (ฟังก์ชัน คลาส ประเภท) จะปรากฏเป็นโหนด และความสัมพันธ์ของพวกมัน (การเรียกใช้ การบรรจุ การนำมาใช้) จะปรากฏเป็นเส้นเชื่อม การแสดงภาพจะเปิดขึ้นโดยอัตโนมัติในเว็บเบราว์เซอร์เริ่มต้นของคุณ
โปรแกรมแสดงผลจะวาดความสัมพันธ์ที่ถูกแก้ไขแล้ว จะแสดงจำนวนความไม่แน่นอน แต่จะไม่วาดความสัมพันธ์ที่ไม่ได้รับการแก้ไขหรือคลุมเครือ หรือลิงก์ผู้สมัครของพวกมัน ตรวจสอบความสัมพันธ์เหล่านั้นด้วยเอาต์พุตการแยกวิเคราะห์:
codeknit parse ./src --output-mode inline --edgescodeknit parse ./src --output-mode inline --format json --edges| Flag | Default | Description |
|---|---|---|
-o, --output |
./skeleton/codeknit-graph.html |
เส้นทางไฟล์ HTML เอาต์พุต |
--collect-test |
false |
รวมไฟล์ทดสอบในการวิเคราะห์ |
--workers |
NumCPU |
จำนวนสูงสุดของ goroutines การแยกวิเคราะห์พร้อมกัน |
--verbose |
false |
แสดงข้อมูลความคืบหน้าในระหว่างการประมวลผล |
ตัวอย่าง
หัวข้อที่มีชื่อว่า “ตัวอย่าง”# Generate default visualizationcodeknit graph show ./myproject
# Custom output filecodeknit graph show ./myproject -o graph.html
# Include test filescodeknit graph show ./src --collect-testgraph analyze
หัวข้อที่มีชื่อว่า “graph analyze”เรียกใช้อัลกอริทึมกราฟโครงสร้างบนโค้ดเบสของคุณและส่งออกรายงาน .skt ที่สามารถอ่านได้โดย LLM ซึ่งประกอบด้วยข้อมูลเชิงลึกเกี่ยวกับคุณภาพโค้ด
codeknit graph analyze <input-path>คำสั่งนี้จะรายงานผู้สมัครสำหรับการตรวจสอบ รวมถึงการพึ่งพาแบบวนรอบ สัญลักษณ์ฮับ โค้ดที่ไม่ได้ใช้งาน คลาส/ฟังก์ชันก็อด และคอขวดทางสถาปัตยกรรม
อัลกอริทึม
หัวข้อที่มีชื่อว่า “อัลกอริทึม”การวิเคราะห์ประกอบด้วยอัลกอริทึมกราฟโครงสร้าง 22 รายการ:
- การพึ่งพาแบบวนรอบ (Tarjan’s SCC)
- การตรวจจับฮับ (การเชื่อมต่อ fan-in/fan-out สูง)
- การตรวจจับรายการกำพร้า (ผู้สมัครโค้ดที่ไม่ได้ใช้งาน)
- การตรวจจับคลาส/ฟังก์ชันก็อด (มีรายการย่อยมากเกินไป)
- เมตริกความไม่เสถียร (Robert C. Martin’s Ce/(Ca+Ce))
- เชนการสืบทอดที่ลึก
- Betweenness centrality (การตรวจจับคอขวด)
- จุดเชื่อมต่อ (จุดเดียวของความล้มเหลว)
- PageRank (ความสำคัญแบบเรียกซ้ำ)
- fan-in แบบส่งผ่าน (ขอบเขตผลกระทบ)
- การจำลองการแพร่กระจายการเปลี่ยนแปลง
- การพึ่งพาระหว่างแพ็กเกจแบบวนรอบ
- การตรวจจับการละเมิดเลเยอร์
- การเข้าถึงได้จากจุดเริ่มต้น
- ส่วนประกอบที่เชื่อมต่อกันอย่างอ่อน
- น้ำหนักการพึ่งพา (ความแข็งแกร่งของการเชื่อมต่อแพ็กเกจ)
- ระยะห่างจาก Main Sequence (สมดุล A+I)
- การตรวจจับการผ่าตัดแบบปืนลูกซอง
- การตรวจจับความอิจฉาคุณสมบัติ
- การละเมิดการพึ่งพาที่เสถียร
- การละเมิดการแบ่งแยกอินเทอร์เฟซ
- ความลึกของการบรรจุ
การตีความรายงาน
หัวข้อที่มีชื่อว่า “การตีความรายงาน”เมตริกการพึ่งพาใช้ความสัมพันธ์ที่ถูกแก้ไขแล้ว รายงานจะนับความสัมพันธ์ที่ไม่ได้รับการแก้ไขและคลุมเครือที่ถูกยกเว้น ข้อมูลเมตาไฟล์/รวมจะถูกยกเว้นจากการจัดอันดับการพึ่งพาและการค้นหาโค้ดที่ไม่ได้ใช้งาน
- fan-in และ fan-out นับเพื่อนบ้านที่แตกต่างกัน ความสัมพันธ์ที่ซ้ำกันจะไม่เพิ่มจำนวนเหล่านี้ และการบรรจุไม่ถือเป็นการพึ่งพา
- ความลึกของการสืบทอดพิจารณาฐานและอินเทอร์เฟซทั้งหมด ลำดับชั้นแบบวนรอบจะไม่ได้รับการกำหนดความลึก
- การเข้าถึงเริ่มต้นจาก callable ที่ชื่อ
main,Main, หรือinitและตามเส้นเชื่อมการพึ่งพา การเข้าถึงสมาชิกจะทำให้คอนเทนเนอร์ของมันเกี่ยวข้องโดยไม่ต้องทำเครื่องหมายทุกพี่น้องว่าสามารถเข้าถึงได้ หากไม่มีจุดเริ่มต้นที่รู้จัก การค้นพบการเข้าถึงจะถูกละเว้น - อาร์กิวเมนต์ callback และ callable ที่ถูกส่งกลับเป็นการอ้างอิง ไม่ใช่หลักฐานว่าคอลแบ็กถูกดำเนินการ
- การแพร่กระจายการเปลี่ยนแปลงใช้เส้นทางการพึ่งพาที่แข็งแกร่งที่สุด คะแนนและกฎเลเยอร์ที่อิงตามไดเรกทอรีเป็นฮิวริสติกส์ ไม่ใช่ความน่าจะเป็นที่วัดได้
ผู้เรียกจากภายนอก การส่งผ่านแบบไดนามิก และการพึ่งพานอกการสแกนสามารถเปลี่ยนแปลงข้อสรุปได้ ดู การรองรับภาษาและความเที่ยงตรงของ API สำหรับกฎและข้อจำกัดในการแก้ไข
| Flag | Default | Description |
|---|---|---|
-o, --output |
./skeleton/graph_analysis.skt |
เส้นทางไฟล์ .skt เอาต์พุต |
--collect-test |
false |
รวมไฟล์ทดสอบในการวิเคราะห์ |
--workers |
NumCPU |
จำนวนสูงสุดของ goroutines การแยกวิเคราะห์พร้อมกัน |
--verbose |
false |
แสดงข้อมูลความคืบหน้าในระหว่างการประมวลผล |
--fan-threshold |
10 |
ค่า fan-in หรือ fan-out ขั้นต่ำในการระบุสัญลักษณ์ฮับ |
--god-threshold |
15 |
จำนวนขอบการบรรจุขั้นต่ำในการระบุคลาส/ฟังก์ชันก็อด |
--max-inheritance-depth |
5 |
ระบุเชนการสืบทอดที่ลึกกว่านี้ |
--top-n |
30 |
จำกัดส่วนเอาต์พุตที่จัดอันดับ; 0 = ไม่มีขีดจำกัด |
--betweenness-threshold |
0.001 |
ค่าความสำคัญของ betweenness ขั้นต่ำในการรายงาน |
--propagation-cutoff |
0.05 |
คะแนนฮิวริสติกขั้นต่ำในการดำเนินการแพร่กระจายการเปลี่ยนแปลง |
ตัวอย่าง
หัวข้อที่มีชื่อว่า “ตัวอย่าง”# Run structural analysis with defaultscodeknit graph analyze ./myproject
# Custom output and thresholdscodeknit graph analyze ./myproject -o analysis.skt --fan-threshold 15
# Show more results per sectioncodeknit graph analyze ./myproject --top-n 50
# Remove the cap on ranked sectionscodeknit graph analyze ./myproject --top-n 0
# Include test filescodeknit graph analyze ./src --collect-testgraph hotspots
หัวข้อที่มีชื่อว่า “graph hotspots”จัดอันดับไฟล์ที่มีการเปลี่ยนแปลงบ่อยและมีความสำคัญทางโครงสร้าง:
codeknit graph hotspots <input-path>คะแนนรวมความถี่ในการคอมมิต การเปลี่ยนแปลงบรรทัด และความใหม่เข้ากับ PageRank ระดับไฟล์ fan-in แบบส่งผ่าน และ betweenness centrality รายงานยังระบุการเชื่อมโยงชั่วคราวระหว่างไฟล์ที่มีการเปลี่ยนแปลงซ้ำในคอมมิตเดียวกัน
คอมมิตการผสานจะถูกยกเว้นโดยค่าเริ่มต้น คอมมิตที่เปลี่ยนแปลงไฟล์มากกว่า 50 ไฟล์ก็ถูกยกเว้นเช่นกัน เพื่อไม่ให้การเปลี่ยนแปลงที่สร้างขึ้นโดยอัตโนมัติ การนำเข้า หรือการเปลี่ยนแปลงจำนวนมากบิดเบือนผลลัพธ์
| Flag | Default | Description |
|---|---|---|
-o, --output |
./skeleton/hotspots.skt |
เส้นทางไฟล์เอาต์พุต |
--format |
skt |
รูปแบบเอาต์พุต: skt หรือ json |
--since |
12mo |
ช่วงเวลาประวัติ เช่น 180d, 12mo, หรือ 2y |
--max-commits |
2000 |
จำนวนคอมมิตสูงสุดที่จะตรวจสอบ |
--max-files-per-commit |
50 |
ยกเว้นคอมมิตที่เปลี่ยนแปลงไฟล์มากเกินไป |
--min-cochanges |
3 |
จำนวนคอมมิตที่ใช้ร่วมกันขั้นต่ำสำหรับการเชื่อมโยงชั่วคราว |
--top-n |
30 |
จำนวนสูงสุดของผลลัพธ์ต่อส่วนรายงาน |
--include-merges |
false |
รวมคอมมิตการผสาน |
--collect-test |
false |
รวมไฟล์ทดสอบ |
--workers |
NumCPU |
จำนวนสูงสุดของ goroutines การแยกวิเคราะห์พร้อมกัน |
--verbose |
false |
แสดงข้อมูลความคืบหน้า |
ตัวอย่าง
หัวข้อที่มีชื่อว่า “ตัวอย่าง”# Analyze the last 12 monthscodeknit graph hotspots ./myproject
# Analyze two years and emit JSONcodeknit graph hotspots ./myproject --since 2y --format json -o hotspots.json
# Include larger commits and require stronger couplingcodeknit graph hotspots . --max-files-per-commit 100 --min-cochanges 5