CK คำนวณตัวชี้วัดรหัสระดับชั้นเรียนและระดับวิธีการในโครงการ Java โดยใช้การวิเคราะห์แบบคงที่ (เช่นไม่จำเป็นต้องใช้รหัสที่รวบรวม) ปัจจุบันมีชุดตัวชี้วัดขนาดใหญ่รวมถึง CK ที่มีชื่อเสียง:
CBO (การมีเพศสัมพันธ์ระหว่างวัตถุ) : นับจำนวนการอ้างอิงที่คลาสมี เครื่องมือตรวจสอบทุกประเภทที่ใช้ในคลาสทั้งหมด (การประกาศฟิลด์, ประเภทการส่งคืนวิธีการ, การประกาศตัวแปร ฯลฯ ) มันไม่สนใจการพึ่งพา Java เอง (เช่น java.lang.string)
การแก้ไข CBO (การมีเพศสัมพันธ์ระหว่างวัตถุ) : นับจำนวนการอ้างอิงที่คลาสมี มันคล้ายกับ CBO ดั้งเดิมของ CKTool อย่างไรก็ตามตัวชี้วัดนี้พิจารณาการพึ่งพาจากชั้นเรียนว่าเป็นทั้งการอ้างอิงประเภทที่ทำกับผู้อื่นและการอ้างอิงที่ได้รับจากประเภทอื่น
Fan-in : นับจำนวนการพึ่งพาอินพุตที่คลาสมีเช่นจำนวนคลาสที่อ้างอิงคลาสเฉพาะ ตัวอย่างเช่นเมื่อได้รับคลาส X พัดลมของ X จะเป็นจำนวนคลาสที่เรียกว่า X โดยอ้างอิงเป็นแอตทริบิวต์การเข้าถึงแอตทริบิวต์บางส่วนเรียกใช้วิธีการบางอย่าง ฯลฯ
Fan-Out : นับจำนวนการพึ่งพาเอาต์พุตที่คลาสมีเช่นจำนวนคลาสอื่น ๆ ที่อ้างอิงโดยคลาสเฉพาะ กล่าวอีกนัยหนึ่งได้รับคลาส X, Fan-Out ของ X คือจำนวนคลาสที่เรียกโดย X ผ่านการอ้างอิงแอตทริบิวต์การเรียกใช้วิธีการอินสแตนซ์วัตถุ ฯลฯ
DIT (ต้นไม้สืบทอดเชิงลึก) : มันนับจำนวน "พ่อ" ที่มีชั้นเรียน คลาสทั้งหมดมี DIT อย่างน้อย 1 (ทุกคนสืบทอด java.lang.Object) เพื่อที่จะทำให้มันเกิดขึ้นคลาสจะต้องมีอยู่ในโครงการ (เช่นถ้าคลาสขึ้นอยู่กับ X ซึ่งอาศัยไฟล์ JAR/การพึ่งพาและ X ขึ้นอยู่กับคลาสอื่น ๆ DIT จะนับเป็น 2)
NOC (จำนวนเด็ก) : นับจำนวนคลาสย่อยทันทีที่คลาสเฉพาะมี
จำนวนฟิลด์ : นับจำนวนฟิลด์ ตัวเลขเฉพาะสำหรับจำนวนฟิลด์ทั้งหมด, คงที่, สาธารณะ, ส่วนตัว, ป้องกัน, เริ่มต้น, ค่าเริ่มต้น, สุดท้ายและฟิลด์ซิงโครไนซ์
จำนวนวิธีการ : นับจำนวนวิธีการ ตัวเลขที่เฉพาะเจาะจงสำหรับจำนวนวิธีทั้งหมด, แบบคงที่, สาธารณะ, บทคัดย่อ, ส่วนตัว, การป้องกัน, เริ่มต้น, ขั้นสุดท้ายและวิธีการซิงโครไนซ์ วิธีการสร้างยังนับที่นี่
จำนวนวิธีการที่มองเห็นได้ : นับจำนวนวิธีการที่มองเห็นได้ วิธีการที่มองเห็นได้หากไม่ใช่ความเป็นส่วนตัว
NOSI (จำนวนการเรียกร้องแบบคงที่) : นับจำนวนการเรียกใช้เป็นวิธีการคงที่ มันสามารถนับได้เฉพาะคนที่สามารถแก้ไขได้โดย JDT
RFC (การตอบสนองสำหรับคลาส) : นับจำนวนการเรียกใช้วิธีการที่ไม่ซ้ำกันในชั้นเรียน เมื่อการเรียกใช้งานได้รับการแก้ไขผ่านการวิเคราะห์แบบคงที่การใช้งานนี้จะล้มเหลวเมื่อวิธีการมีมากเกินไปด้วยพารามิเตอร์จำนวนเท่ากัน แต่ประเภทที่แตกต่างกัน
WMC (คลาสวิธีน้ำหนัก) หรือ ความซับซ้อนของ McCabe มันนับจำนวนคำแนะนำสาขาในชั้นเรียน
LOC (บรรทัดของรหัส) : มันนับบรรทัดของการนับ, ละเว้นบรรทัดที่ว่างเปล่าและความคิดเห็น (เช่นมันเป็นบรรทัดแหล่งที่มาของรหัสหรือ SLOC) จำนวนบรรทัดที่นี่อาจแตกต่างจากไฟล์ต้นฉบับเล็กน้อยเนื่องจากเราใช้การเป็นตัวแทนภายในของ JDT ของซอร์สโค้ดเพื่อคำนวณ
LCOM (ขาดการทำงานร่วมกันของวิธีการ) : คำนวณตัวชี้วัด LCOM นี่เป็นรุ่นแรกของตัวชี้วัดซึ่งไม่น่าเชื่อถือ LCOM-HS จะดีขึ้น (หวังว่าคุณจะส่งคำขอดึงมาให้เรา)
LCOM* (ขาดการทำงานร่วมกันของวิธีการ) : ตัวชี้วัดนี้เป็นเวอร์ชันที่แก้ไขของ LCOM เวอร์ชันปัจจุบันที่ใช้ในเครื่องมือ CK LCOM* เป็นตัวชี้วัดปกติที่คำนวณการขาดการทำงานร่วมกันของชั้นเรียนภายในช่วง 0 ถึง 1 จากนั้นยิ่งใกล้กับ 1 ค่าของ LCOM* ในชั้นเรียนยิ่งระดับการทำงานร่วมกันน้อยลงของคลาสนี้ ยิ่งใกล้กับ 0 ค่าของ LCOM* ในชั้นเรียนมากที่สุดคือการทำงานร่วมกันของคลาสนี้มากที่สุด การใช้งานนี้เป็นไปตาม LCOM* รุ่นที่สามที่กำหนดไว้ใน [1]
TCC (การทำงานร่วมกันของคลาสที่แน่น) : วัดการทำงานร่วมกันของคลาสที่มีช่วงค่าตั้งแต่ 0 ถึง 1 TCC วัดการทำงานร่วมกันของคลาสผ่านการเชื่อมต่อโดยตรงระหว่างวิธีการที่มองเห็นได้สองวิธีหรือต้นไม้เรียกใช้ตัวแปรคลาสเดียวกัน
LCC (การทำงานร่วมกันของคลาสหลวม) : คล้ายกับ TCC แต่ยังรวมถึงจำนวนการเชื่อมต่อทางอ้อมระหว่างคลาสที่มองเห็นได้สำหรับการคำนวณการทำงานร่วมกัน ดังนั้นข้อ จำกัด lcc> = tcc ถืออยู่เสมอ
ปริมาณของผลตอบแทน : จำนวนคำแนะนำ return
ปริมาณของลูป : จำนวนลูป (เช่นในขณะที่ทำในขณะที่ปรับปรุงสำหรับ)
ปริมาณของการเปรียบเทียบ : จำนวนการเปรียบเทียบ (เช่น, == และ! =) หมายเหตุ:! = มีเฉพาะใน 0.4.2+ เท่านั้น
ปริมาณของการลอง/จับ : จำนวนการลอง/จับ
ปริมาณของนิพจน์วงเล็บ : จำนวนการแสดงออกภายในวงเล็บ
ตัวอักษรสตริง : จำนวนตัวอักษรสตริง (เช่น "John Doe" ) สตริงซ้ำนับหลายครั้งตามที่ปรากฏ
ปริมาณจำนวน : จำนวนตัวเลข (เช่น int, ยาว, สอง, สอง, ลอย) ตัวอักษร
ปริมาณการดำเนินงานทางคณิตศาสตร์ : จำนวนการดำเนินการทางคณิตศาสตร์ (เวลา, หาร, ส่วนที่เหลือ, บวก, ลบ, อึซ้าย, กะขวา)
ปริมาณของตัวแปร : จำนวนตัวแปรที่ประกาศ
บล็อกซ้อนกันสูงสุด : จำนวนบล็อกที่ซ้อนกันสูงสุดเข้าด้วยกัน
ปริมาณของคลาสที่ไม่ระบุชื่อคลาสชั้นในและการแสดงออกของแลมบ์ดา : ชื่อบอกว่ามันทั้งหมด โปรดทราบว่าเมื่อใดก็ตามที่มีการประกาศคลาสที่ไม่ระบุชื่อหรือชั้นเรียนชั้นในมันจะกลายเป็น "คลาสใหม่ทั้งหมด" เช่น CK จะสร้าง AB และ AB $ C, C เป็นชั้นเรียนภายในภายใน AB อย่างไรก็ตามการแสดงออกของแลมบ์ดาไม่ได้รับการพิจารณาคลาส คลาสหรือวิธีการมีเพียงจำนวนคลาสชั้นในที่ประกาศในระดับของมันเช่นคลาสชั้นในที่ประกาศภายในวิธี M2 ซึ่งอยู่ในคลาส A ที่ไม่ระบุชื่อซึ่งถูกประกาศภายในวิธี M ซึ่งในที่สุดก็มีการประกาศในชั้นเรียน
จำนวนคำที่ไม่ซ้ำกัน : จำนวนคำที่ไม่ซ้ำกันในซอร์สโค้ด ในระดับวิธีจะใช้เฉพาะวิธีการเป็นอินพุต ในระดับชั้นเรียนจะใช้ทั้งตัวในชั้นเรียนเป็นตัวชี้วัด อัลกอริทึมโดยทั่วไปจะนับจำนวนคำในวิธี/คลาสหลังจากลบคำหลัก Java ชื่อจะถูกแยกตามเคสอูฐและขีดเส้นใต้ (เช่น longname_likethis กลายเป็นสี่คำ) ดูคลาส WordCounter สำหรับรายละเอียดเกี่ยวกับการใช้งาน
จำนวนคำสั่งบันทึก : จำนวนคำสั่งบันทึกในซอร์สโค้ด การนับใช้ regex เข้ากันได้กับการโทร SLF4J และ LOG4J API ดู NumberOfLogStatements.java และตัวอย่างการทดสอบ ( NumberOfLogStatementsTest และ fixtures/logs ) สำหรับข้อมูลเพิ่มเติม
มี javadoc : บูลีนระบุว่าวิธีการมี javadoc หรือไม่ (เฉพาะในระดับเมธอดตอนนี้)
ตัวดัดแปลง : ตัวดัดแปลงสาธารณะ/บทคัดย่อ/ส่วนตัว/ป้องกัน/เนทีฟของคลาส/วิธีการ สามารถถอดรหัสได้โดยใช้ org.eclipse.jdt.core.dom.Modifier
การใช้งานของตัวแปรแต่ละตัว : ใช้ตัวแปรแต่ละตัวบ่อยแค่ไหนในแต่ละวิธี
การใช้งานของแต่ละฟิลด์ : ความถี่ในแต่ละฟิลด์ที่ใช้ภายในแต่ละวิธีฟิลด์ท้องถิ่นเป็นเขตข้อมูลภายในชั้นเรียน (ไม่รวมคลาสย่อย) ตรวจพบการใช้งานฟิลด์ในท้องถิ่นทางอ้อมการใช้งานฟิลด์ในท้องถิ่นทางอ้อมรวมถึงการใช้งานทั้งหมดของฟิลด์ภายในแผนผังการเรียกร้องท้องถิ่นของชั้นเรียนเช่นการเรียกใช้ B และ B ใช้ฟิลด์ A จากนั้น A จะถูกใช้โดย A. A. A. A. A.
การเรียกใช้วิธีการ : วิธีการที่เรียกใช้โดยตรงทั้งหมดการเปลี่ยนแปลงคือการเรียกใช้งานท้องถิ่นและการเรียกร้องในท้องถิ่นทางอ้อม
หมายเหตุ: CK แยกคลาสคลาสภายในและคลาสที่ไม่ระบุชื่อ LOC เป็นตัวชี้วัดเดียวที่ไม่ได้แยกออกจากคนอื่นอย่างสมบูรณ์เช่นถ้า A มีการประกาศของชั้นเรียนชั้นในจากนั้น LOC (A) = LOC (Class A) + LOC (ชั้นในคลาส B)
CK เป็นเครื่องมือรวบรวมตัวชี้วัดรหัส Java ซึ่งมีความคล่องตัวในโครงสร้างง่าย ๆ ที่หมุนรอบแพ็คเกจหลักสามแพ็คเกจ:
สำหรับความกะทัดรัดภายในเอกสารนี้คำนำหน้าแพ็คเกจเช่น com.github.mauricioaniche.ck จะถูกละไว้
CK จัดการการประสานของกระบวนการรวบรวมตัวชี้วัดทั้งหมด มันเริ่มต้นการค้นหาตัวชี้วัดจัดการการแบ่งพาร์ติชันไฟล์ตามหน่วยความจำที่มีอยู่ตั้งค่าการแยกวิเคราะห์ AST ด้วยการตั้งค่าสภาพแวดล้อมที่เหมาะสม มันปรับพฤติกรรมแบบไดนามิกตามอินพุตของผู้ใช้เช่น useJars , maxAtOnce และ variablesAndFields เพื่อเพิ่มประสิทธิภาพการประมวลผลของไฟล์ Java สำหรับการรวบรวมตัวชี้วัดck คลาสนี้ประมวลผลอาร์กิวเมนต์บรรทัดคำสั่งเพื่อกำหนดค่าและเรียกใช้กระบวนการรวบรวมตัวชี้วัด มันจัดการอินพุตของผู้ใช้สำหรับเส้นทางโครงการการรวม JAR การแบ่งพาร์ติชันไฟล์รายละเอียดการวัดและการตั้งค่าไดเรกทอรีเอาต์พุต Runner จัดแต่งการดำเนินการโดยรวมโดยการเริ่มต้นและใช้คลาส CK และการจัดการผลลัพธ์ที่ส่งออกผ่านทาง ResultWriterFileASTRequestor ซึ่งเป็นส่วนประกอบของแกน Eclipse JDT (Java Development Tools) มันมีบทบาทสำคัญในกรอบ CK โดยการจัดเตรียมกระบวนการรวบรวมตัวชี้วัด MetricsExecutor ประสานงานการสร้างแผนผังนามสกุลนามธรรม (AST) สำหรับไฟล์ต้นฉบับ Java ซึ่งเป็นสิ่งจำเป็นสำหรับการวิเคราะห์และแยกการวัดรหัส MetricsFinder: คลาสยูทิลิตี้นี้ตั้งอยู่ใน ck.utils มีบทบาทสำคัญในการระบุแบบไดนามิกและการสร้างอินสแตนซ์ของคลาสนักสะสมตัวชี้วัดภายในกรอบ CK มันกำหนดเป้าหมายคลาสที่ใช้อินเตอร์เฟส ClassLevelMetric และ MethodLevelMetric จากแพ็คเกจ metrics
MetricsFinder ใช้ไลบรารี Reflections เพื่อสแกนและโหลดคลาส Metric Collector ที่รันไทม์ซึ่งช่วยให้ระบบ CK สามารถขยายได้และปรับให้เข้ากับตัวชี้วัดใหม่โดยไม่ต้องมีการปรับเปลี่ยนสถาปัตยกรรมหลัก คุณลักษณะนี้มีประโยชน์อย่างยิ่งสำหรับการรวมตัวชี้วัดที่กำหนดเองเข้ากับกระบวนการวิเคราะห์ได้อย่างราบรื่น
CKVISITOR: ส่วนประกอบที่สำคัญของ CK Framework, CKVisitor ขยายคลาส ASTVisitor ที่จัดทำโดย Eclipse JDT (เครื่องมือพัฒนา Java) เปิดใช้งานการวิเคราะห์โดยละเอียด
ผู้เข้าชมได้รับการออกแบบมาเพื่อสำรวจโหนดต่าง ๆ ของ AST เช่นประเภทและวิธีการและใช้การกระทำที่เฉพาะเจาะจงในแต่ละโหนด มันจัดการลำดับชั้นของสแต็กได้อย่างมีประสิทธิภาพของคลาสและวิธีการช่วยให้การวัดและรวบรวมในบริบทของขอบเขตของโหนดปัจจุบัน
CKASTVISITOR: ดำเนินการโดยคลาสการวัดใน ck.metrics ช่วยให้แต่ละเมตริกสามารถจัดการโหนด AST ที่น่าสนใจเฉพาะเช่นการเรียกใช้วิธีการและการสร้างอินสแตนซ์ของชั้นเรียน
classlevelmetric และ methodlevelevelmetric: อินเตอร์เฟสการกำหนดวิธีการสำหรับการรวบรวมตัวชี้วัดระดับคลาสและระดับเมธอดตามลำดับ
CKNotifierCKClassResult และ CKMethodResult ด้วยข้อมูลที่รวบรวมCK Framework รวมรูปแบบการออกแบบที่ได้รับการยอมรับเป็นจำนวนมากเพื่อเพิ่มความสามารถในการขยายความสามารถในการขยายและการบำรุงรักษาของรหัสฐาน รูปแบบเหล่านี้ช่วยให้เฟรมเวิร์กสามารถจัดการการดำเนินงานที่ซับซ้อนได้อย่างมีประสิทธิภาพเช่นการสำรวจต้นไวยากรณ์นามธรรม (AST) การรวบรวมตัวชี้วัดและการแจ้งผลลัพธ์ ด้านล่างนี้เป็นรูปแบบการออกแบบที่สำคัญที่ใช้:
รูปแบบของผู้เยี่ยมชม: อินเทอร์เฟซ CKVisitor และ CKASTVisitor ใช้รูปแบบของผู้เข้าชมซึ่งเป็นจุดสำคัญในการจัดการการดำเนินการบนโหนด AST ต่างๆโดยไม่ต้องเปลี่ยนคลาสขององค์ประกอบที่ทำงาน รูปแบบนี้เป็นประโยชน์อย่างยิ่งในสถานการณ์ที่ส่วนประกอบจำเป็นต้องดำเนินการที่แตกต่างและไม่เกี่ยวข้องในลำดับชั้นของคลาสของโหนด AST มันทำให้โค้ดง่ายขึ้นโดยการทำให้ตรรกะการดำเนินงานภายนอกเป็นวัตถุผู้เข้าชมอำนวยความสะดวกในการเพิ่มการดำเนินการใหม่โดยไม่ต้องปรับเปลี่ยนคลาสโหนดที่มีอยู่ การแยกข้อกังวลนี้นำไปสู่ codebase ที่สามารถบำรุงรักษาได้และขยายได้มากขึ้นซึ่งโครงสร้างโหนดและการดำเนินงานของ AST จะถูกแยกออก
รูปแบบการแจ้งเตือน: CK ใช้รูปแบบการแจ้งเตือนผ่านการใช้ CKNotifier ซึ่งทำหน้าที่เป็นกลไกหลักในการถ่ายทอดผลลัพธ์ของการรวบรวมตัวชี้วัดไปยังผู้สังเกตการณ์ที่ลงทะเบียนทั้งหมด รูปแบบนี้มีความสำคัญสำหรับการสร้างสถาปัตยกรรมคู่ที่หลวม ๆ ซึ่งกระบวนการ (กระบวนการคำนวณตัวชี้วัด) เป็นอิสระจากผู้สังเกตการณ์ (โปรเซสเซอร์ผลลัพธ์หรือเครื่องกำเนิดรายงาน) สิ่งนี้ช่วยให้ CK สามารถแจ้งส่วนประกอบหลายอย่างเกี่ยวกับการคำนวณการวัดที่สมบูรณ์โดยไม่ต้องมีเพศสัมพันธ์กับส่วนประกอบเฉพาะซึ่งช่วยเพิ่มความยืดหยุ่นและความสามารถในการปรับขนาดของระบบ
รูปแบบจากโรงงาน: การสร้างอินสแตนซ์ของนักสะสมตัวชี้วัดได้รับการจัดการโดย MetricsFinder ซึ่งรวบรวมรูปแบบโรงงาน รูปแบบนี้ใช้เพื่อห่อหุ้มตรรกะของคลาสตัวชี้วัดที่เฉพาะเจาะจงจากการตัดสินใจของรันไทม์ รูปแบบของโรงงานช่วยให้กระบวนการเพิ่มประเภทของตัวชี้วัดประเภทใหม่ง่ายขึ้นโดยไม่รบกวนรหัสที่มีอยู่โดยให้สถาปัตยกรรมแบบปลั๊กแอนด์เพลย์ที่สามารถแนะนำตัวชี้วัดใหม่ได้อย่างราบรื่น นอกจากนี้ยังช่วยในการรักษาการแยกข้อกังวลเนื่องจากกระบวนการสร้างวัตถุเมตริกถูกแยกออกจากตรรกะหลักของคอลเลกชันตัวชี้วัด
ด้วยการใช้ประโยชน์จากรูปแบบการออกแบบเหล่านี้ CK จัดการความซับซ้อนได้อย่างมีประสิทธิภาพและทำให้มั่นใจได้ว่าเฟรมเวิร์กยังคงแข็งแกร่งปรับตัวได้และง่ายต่อการขยายเมื่อความต้องการใหม่และประเภทตัวชี้วัดเกิดขึ้น
คุณต้องใช้อย่างน้อย Java 8 เพื่อให้สามารถรวบรวมและเรียกใช้เครื่องมือนี้ได้
หากต้องการใช้ เวอร์ชันล่าสุด (ซึ่งคุณควร) ให้โคลนโครงการและสร้างขวด mvn clean compile package อย่างง่ายสร้างไฟล์ Jar เดียวสำหรับคุณ (ดูโฟลเดอร์ เป้าหมาย ของคุณ)
จากนั้นเพียงแค่วิ่ง:
java -jar ck-x.x.x-SNAPSHOT-jar-with-dependencies.jar
<project dir>
<use jars:true|false>
<max files per partition:0=automatic selection>
<variables and fields metrics?:true|false>
<output dir>
[ignored directories...]
Project dir หมายถึงไดเรกทอรีที่ CK สามารถค้นหาซอร์สโค้ดทั้งหมดที่จะแยกวิเคราะห์ได้ CK จะค้นหาไฟล์. java ซ้ำ CK สามารถใช้การพึ่งพาของโครงการเพื่อปรับปรุงความแม่นยำ พารามิเตอร์ use jars บอกให้ CK ค้นหาไฟล์. jar ใด ๆ ในไดเรกทอรีและใช้เพื่อแก้ไขประเภทที่ดีขึ้น Max files per partition บอกขนาดของ JDT ของแบทช์ในการประมวลผล ให้เราตัดสินใจว่าสำหรับคุณและเริ่มต้นด้วย 0; หากปัญหาเกิดขึ้น (เช่นความทรงจำ) คุณคิดว่าจะปรับจูน Variables and field metrics บ่งบอกถึง CK ว่าคุณต้องการตัวชี้วัดที่ระดับตัวแปรและระดับฟิลด์ด้วยหรือไม่ พวกเขามีความละเอียดสูงและผลิตผลผลิตจำนวนมาก คุณควรข้ามไปถ้าคุณต้องการเพียงตัวชี้วัดในระดับชั้นเรียนหรือวิธีการ ในที่สุด output dir อ้างถึงไดเรกทอรีที่ CK จะส่งออกไฟล์ CSV ด้วยตัวชี้วัดจากโครงการวิเคราะห์ ทางเลือกคุณสามารถระบุหมายเลขใด ๆ ที่ถูกละเว้นไดเรกทอรีซึ่งคั่นด้วยช่องว่าง (ตัวอย่างเช่น build/ ) โดยค่าเริ่มต้น .git และโฟลเดอร์ที่ซ่อนอยู่อื่น ๆ ทั้งหมดจะถูกละเว้น
เครื่องมือจะสร้างไฟล์ CSV สามไฟล์: คลาสวิธีและระดับตัวแปร
เรียนรู้โดยตัวอย่าง ดูคลาส Runner.java
ดูเวอร์ชันล่าสุดของไลบรารีในป้ายที่จุดเริ่มต้นของ readme นี้หรือที่ https://mvnrepository.com/artifact/com.github.mauricioaniche/ck
ใช้ตัวอย่างต่อไปนี้ใน pom.xml ของคุณ อัปเดต xyz ด้วยเครื่องมือเวอร์ชันล่าสุด (ตรวจสอบ mvnrepository.com หรือตราที่จุดเริ่มต้นของไฟล์ readme นี้):
<!-- https://mvnrepository.com/artifact/com.github.mauricioaniche/ck -->
<dependency>
<groupId>com.github.mauricioaniche</groupId>
<artifactId>ck</artifactId>
<version>X.Y.Z</version>
</dependency>
นอกจากนี้คุณยังสามารถใช้ปลั๊กอิน CK Maven พัฒนาโดย @JazzMuesli ซึ่งทำงาน CK ในโครงการของคุณโดยอัตโนมัติ มีประโยชน์มากสำหรับนักพัฒนา: https://github.com/jazzmuesli/ck-mvn-plugin
เครื่องมือนี้ใช้ห้องสมุด JDT Core ของ Eclipse ภายใต้ประทุนสำหรับการก่อสร้าง AST ปัจจุบันเวอร์ชันการปฏิบัติตามกฎระเบียบถูกตั้งค่าเป็น Java 11
ต้องการการสนับสนุนสำหรับเวอร์ชันภาษาใหม่หรือไม่? กระบวนการเพิ่มมันตรงไปตรงมามากโดยพิจารณาจากการมีส่วนร่วม PR:
pom.xml คุณสามารถใช้เบราว์เซอร์ที่เก็บข้อมูลเช่นที่เก็บ MVN เพื่อบรรเทากระบวนการนี้ได้pom.xml อัปเดตคุณสมบัติ source และ target ของปลั๊กอินคอมไพเลอร์ Maven ตามลำดับCK.java : [...]
ASTParser parser = ASTParser.newParser(AST.JLS11);
[...]
JavaCore.setComplianceOptions(JavaCore.VERSION_11, options);
[...]
เพราะเครื่องมือนี้เกิดมาเพื่อคำนวณ CK Classlevelmetrics แต่มันก็เพิ่มขึ้นเกินความคาดหมายของฉัน ... ชีวิตตลก!
กรุณาใช้รายการ bibtex ต่อไปนี้:
@manual{aniche-ck,
title={Java code metrics calculator (CK)},
author={Maurício Aniche},
year={2015},
note={Available in https://github.com/mauricioaniche/ck/}
}
เพียงแค่ส่ง PR! -
ซอฟต์แวร์นี้ได้รับอนุญาตภายใต้ใบอนุญาต Apache 2.0