Eclipse นับบรรทัดของรหัส


107

ฉันได้ลองใช้ปลั๊กอิน Metricsแล้วและแม้ว่ามันจะดี แต่ก็ไม่ใช่สิ่งที่เจ้านายของฉันกำลังมองหา มันนับเส้นที่มีเพียง}เส้นเดียวและเขาไม่ต้องการให้นับว่า "มันไม่ใช่เส้น แต่เป็นการเลือกสไตล์" ฉันยังต้องสร้างรายงานบางรูปแบบเกี่ยวกับเมตริกที่มีให้ มีเครื่องมือที่ดีสำหรับสิ่งนี้หรือไม่?


1
คำถามข้างเคียง: สิ่งนี้จะใช้เป็นเมตริกเพื่อแสดงว่านักพัฒนาซอฟต์แวร์ของคุณทำงานได้ดีเพียงใด ถ้าเป็นเช่นนั้นการนับตัวอักษร / ไม่เว้นวรรคอาจจะดีกว่า ถึงกระนั้นก็ดูเหมือนเป็นเมตริกตามอำเภอใจจริงๆ ... ตามที่เพื่อนคนหนึ่งกล่าวไว้: "โดยทั่วไปโค้ดหลายบรรทัดในการแก้ปัญหานั้นไม่ได้ดีกว่า (หรือแย่กว่า) น้อยกว่าโค้ดที่จะแก้ปัญหาเดียวกันได้น้อยลง"
Sancarn

คำตอบ:


94

ติดตั้งตัวชี้วัดปลั๊กอิน Eclipse หากต้องการสร้างรายงาน HTML (มีตัวเลือกและ XML right-click a project -> Export -> Other -> MetricsCSV)

คุณสามารถปรับเมตริก Lines of Code ได้โดยละเว้นบรรทัดว่างและบรรทัดที่แสดงความคิดเห็นเท่านั้นหรือยกเว้น Javadoc หากคุณต้องการ Preferences -> Metrics -> LoCที่จะทำเครื่องหมายนี้แท็บที่

แค่นั้นแหละ. {}ไม่มีตัวเลือกพิเศษที่จะไม่รวมเป็นวงเล็บปีกกา

ข้อเสนอปลั๊กอินทางเลือกเมตริก LoC เรียกว่าจำนวนงบ นี่คือสิ่งที่ผู้เขียนกล่าวถึง:

เมตริกนี้แสดงถึงจำนวนคำสั่งในวิธีการ ฉันคิดว่ามันเป็นการวัดที่แข็งแกร่งกว่า Lines of Code เนื่องจากแบบหลังมีความเปราะบางเมื่อเทียบกับรูปแบบการจัดรูปแบบที่แตกต่างกัน

แก้ไข:

หลังจากที่คุณชี้แจงคำถามของคุณแล้วเราเข้าใจว่าคุณต้องการข้อมูลพร็อพเพอร์ตี้สำหรับการละเมิดเมตริกแบบเรียลไทม์เช่นคำเตือนหรือข้อผิดพลาดของคอมไพเลอร์ คุณยังต้องมีฟังก์ชันการรายงานเพื่อสร้างรายงานสำหรับหัวหน้าของคุณ ปลั๊กอินที่ฉันอธิบายไว้ข้างต้นมีไว้สำหรับการรายงานเนื่องจากคุณต้องส่งออกเมตริกเมื่อคุณต้องการดู


สิ่งที่ฉันกำลังมองหาและคุณสมบัติการส่งออกที่ดี
george_h

1
เวอร์ชันปัจจุบันของปลั๊กอินนี้ (3.14.1) ดูเหมือนจะไม่ทำงานกับ Eclipse Luna (4.4) น่าแปลกที่ปลั๊กอินเมตริกโบราณจาก Sourceforge ยังคงใช้งานได้ ...
ejain

หลายคนรายงานว่ามันไม่ทำงานอีกต่อไป แต่ไม่มีใครส่งข้อผิดพลาดที่ SourceForge ...
Thomas Weller

6
ใช่. ฉันไม่เห็นตัวเลือกใด ๆ ภายใต้right click a project -> Exportฉันได้ติดตั้งปลั๊กอินโดยตรงจาก eclipse marketplace - เวอร์ชันคือ - Eclipse Metrics 3.12.0ใครก็ได้โปรดช่วยฉันด้วย ขอบคุณ!
OverrockSTAR

2
มีเวอร์ชันที่ใช้งานได้ - github.com/qxo/eclipse-metrics-plugin/blob/master/updatesite/…
Damian

263

"พลังเดรัจฉาน" มีอยู่เสมอ:

  1. ค้นหา -> ไฟล์

  2. พิมพ์ต่อไปนี้ใน "ที่มีข้อความว่า" ^.*$-> จากนั้นเลือกช่องทำเครื่องหมาย "นิพจน์ทั่วไป"

  3. พิมพ์ดังต่อไปนี้ใน "รูปแบบชื่อไฟล์" -> *.java

  4. คลิก "ค้นหา"

  5. ตรวจสอบจำนวนการแข่งขันในแท็บ "ค้นหา"


11
สิ่งนี้ทำในสิ่งที่ฉันกำลังมองหา มันไม่ได้ยกเว้นวงเล็บหรืออะไรแปลก ๆ แต่มันให้คำตอบที่ฉันกำลังมองหาในคราสโดยไม่มีปลั๊กอิน ขอบคุณ!
Luke

24
คุณยังสามารถใช้ได้\n[\s]*และจะไม่สนใจบรรทัดว่างเช่นกัน
Ascalonian

3
ทางออกที่ดีมากโดยไม่ต้องใช้ปลั๊กอินอื่น! +1
Stephan

2
สิ่งนี้ใช้ได้กับคราสล่าสุด (นีออน) แต่ปลั๊กอินเมตริกไม่ทำงาน
Anatoly Yakimchuk

2
ต้องพิมพ์ความคิดเห็นของ @omerio ด้วยและเป็นส่วนที่จำเป็นของซอร์สโค้ดใด ๆ ไม่นับการชักจูงที่ไม่สำคัญหรือเป็นเพียงข้อความตาบอดซึ่งถือเป็นข้อผิดพลาดร้ายแรง
Axel Amthor

23

หากใช้ OSX หรือ * NIX

รับโค้ด java ทุกบรรทัดจากไฟล์ * .java

find . -name "*.java" -exec grep "[a-zA-Z0-9{}]" {} \; | wc -l

รับทุกบรรทัดจากไฟล์ * .java ซึ่งรวมถึงบรรทัดว่างและความคิดเห็น

find . -name "*.java" -exec cat | wc -l

รับข้อมูลต่อไฟล์ซึ่งจะให้ [เส้นทางไปยังไฟล์ + "," + จำนวนบรรทัด]

find . -name "*.java" -exec wc -l {} \;

การรันคำสั่งแรกบน OSX ฉันได้รับ: grep: ช่วงอักขระไม่ถูกต้อง 0
omerio

สิ่งนี้ได้ผลสำหรับฉันพบ - ชื่อ "* .java" | แมว xargs | grep '[alnum]' | wc -l
omerio

2
ควรจะเป็นfind . -name "*.java" | xargs cat | grep "[a-zA-Z0-9{}]" | wc -l
warrior107

8

อีกวิธีหนึ่งคือการใช้ยูทิลิตี้ loc อื่นเช่นLocMetricsเป็นต้น
นอกจากนี้ยังแสดงหลายเครื่องมือ loc อื่น ๆ การผสานรวมกับ Eclipse จะไม่อยู่ที่นั่นเสมอไป (เช่นเดียวกับMetrics2ซึ่งคุณสามารถตรวจสอบได้เนื่องจากเป็นเวอร์ชันล่าสุดมากกว่าMetrics ) แต่อย่างน้อยเครื่องมือเหล่านั้นก็สามารถให้เหตุผลในแง่ของเส้นตรรกะได้ (คำนวณโดยการรวม อัฒภาคเทอร์มินัลและวงเล็บปีกกาขั้ว)
นอกจากนี้คุณยังตรวจสอบได้ด้วยeclipse-metrics ที่ปรับให้เข้ากับสิ่งที่คุณคาดหวังมากขึ้น


7

เครื่องมืออีกอย่างคือGoogle Analytixซึ่งจะช่วยให้คุณสามารถเรียกใช้เมตริกได้แม้ว่าคุณจะไม่สามารถสร้างโครงการได้ในกรณีที่เกิดข้อผิดพลาด


แม้ว่าไซต์จะบอกว่าเป็นเพียงคราสเวอร์ชันเก่า แต่มันก็ใช้ได้ดีกับ Luna สำหรับฉัน ขอบคุณสำหรับสิ่งนี้.
CamHart

7

วิธีหนึ่งที่เป็นไปได้ในการนับบรรทัดของโค้ดใน Eclipse:

ใช้เมนูค้นหา / ไฟล์ ... เลือกแท็บค้นหาไฟล์ระบุ \ n [\ s] * สำหรับข้อความที่มีอยู่ (จะไม่นับบรรทัดว่าง) และทำเครื่องหมายนิพจน์ทั่วไป

เคล็ดลับหมวก: www.monblocnotes.com/node/2030


ว้าวเป็นอัจฉริยะสุด ๆ ยินดีที่จะไม่นับบรรทัดว่างตราบใดที่คุณไม่ได้รับเงินตามหมายเลข ...
JohnnyB

1

ฉันสร้างปลั๊กอิน Eclipse ซึ่งสามารถนับบรรทัดของซอร์สโค้ดได้ รองรับ Kotlin, Java, Java Script, JSP, XML, C / C ++, C # และไฟล์ประเภทอื่น ๆ อีกมากมาย

โปรดดูที่มัน ข้อเสนอแนะใด ๆ จะได้รับการชื่นชม!

ที่เก็บ git-hub อยู่ที่นี่


0

ProjectCodeMeter นับ LLOC (บรรทัดของโค้ดเชิงตรรกะ) ตรงตามที่คุณอธิบายไว้ (เฉพาะบรรทัดที่มีประสิทธิภาพ) มันรวมเข้ากับ eclipse เป็นเครื่องมือเมตริกโค้ดภายนอกแต่มันไม่ใช่แบบเรียลไทม์ แต่มันสร้างรายงานตามจริงแล้วมันนับเมตริกซอร์สโค้ดจำนวนมากเช่นความซับซ้อนความซับซ้อนทางคณิตศาสตร์สตริงที่เข้ารหัสยากค่าคงที่เป็นตัวเลข .. แม้จะประมาณเวลาในการพัฒนาเป็นชั่วโมง .


0

สำหรับการวิเคราะห์แบบคงที่ฉันได้ใช้และแนะนำ SonarQube ซึ่งทำงานเกี่ยวกับเมตริกทั้งหมดที่คุณอาจต้องการในหลากหลายภาษาและฟรีในเวอร์ชันพื้นฐาน (คุณต้องจ่ายเงินเพื่อวิเคราะห์ประเภทของภาษาที่ฉันต้องการ มีเพียงรหัสในปืนที่หัวของฉัน)

คุณต้องติดตั้งเป็นเว็บแอปที่เรียกใช้การวิเคราะห์จากที่เก็บซอร์สโค้ดของคุณ แต่ก็มีปลั๊กอิน Eclipseด้วย

มันเกินความจำเป็นถ้าคุณแค่อยากรู้ว่าในโปรเจ็กต์ของคุณมีโค้ดกี่บรรทัด หากคุณต้องการติดตามเมตริกตามช่วงเวลาเปรียบเทียบระหว่างโปรเจ็กต์คำเตือนไฟไหม้เมื่อเกินเกณฑ์ ฯลฯ มันยอดเยี่ยมมาก

การเปิดเผยข้อมูล: ฉันไม่มีความสัมพันธ์ทางการเงินกับ SonarSource


0

สิ่งแรกที่ต้องทำคือกำหนดคำจำกัดความของ "บรรทัดรหัส" (LOC) ในคำถามของคุณทั้งสอง

มันนับเส้นที่มีเพียงเส้นเดียว} และเขาไม่ต้องการให้นับว่า "มันไม่ใช่เส้น แต่เป็นการเลือกสไตล์"

และในคำตอบเช่น

คุณสามารถปรับเมตริก Lines of Code ได้โดยละเว้นบรรทัดว่างและบรรทัดที่แสดงความคิดเห็นเท่านั้นหรือยกเว้น Javadoc หากคุณต้องการ

คุณสามารถบอกได้ว่าผู้คนมีความคิดเห็นที่แตกต่างกันเกี่ยวกับสิ่งที่ถือเป็นบรรทัดของรหัส โดยเฉพาะอย่างยิ่งผู้คนมักจะเข้าใจไม่ชัดเจนว่าพวกเขาต้องการจำนวนบรรทัดของรหัสหรือจำนวนข้อความหรือไม่ ตัวอย่างเช่นหากคุณมีข้อความที่ยาวมากต่อไปนี้คุณต้องการรายงานอะไร 1 LOC หรือหลายร้อยข้อความ

{ a = 1; b = 2; if (a==c) b++; /* etc. for another 1000 characters */ }

และเมื่อมีคนถามคุณว่าคุณเรียก LOC ว่าอะไรโปรดตรวจสอบให้แน่ใจว่าคุณสามารถตอบได้แม้ว่าจะเป็นเพียง "คำจำกัดความของ LOC คือคำจำกัดความของ Metrics2" ก็ตาม โดยทั่วไปสำหรับโค้ดที่จัดรูปแบบโดยทั่วไป (ไม่เหมือนกับตัวอย่างของฉัน) เครื่องมือยอดนิยมจะให้ตัวเลขที่ใกล้เคียงกันมากดังนั้น Metrics2, SonarQube และอื่น ๆ ควรจะใช้ได้ดีตราบใดที่คุณใช้อย่างสม่ำเสมอ กล่าวอีกนัยหนึ่งคืออย่านับ LOC ของโค้ดบางส่วนโดยใช้เครื่องมือเดียวและเปรียบเทียบค่านั้นกับโค้ดรุ่นที่ใหม่กว่าที่วัดด้วยเครื่องมืออื่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.