คำนวณเมตริกโค้ด [ปิด]


87

มีเครื่องมือใดบ้างที่จะคำนวณเมตริกโค้ด (เช่นจำนวนบรรทัดโค้ดความซับซ้อนของวัฏจักรการเชื่อมต่อการเชื่อมต่อกัน) สำหรับโครงการของคุณและเมื่อเวลาผ่านไปจะสร้างกราฟที่แสดงแนวโน้ม


1
ขึ้นอยู่กับภาษาที่คุณใช้?
Valentin Rocher

คำตอบ:


67

ในโครงการล่าสุดของฉันฉันใช้SourceMonitor เป็นเครื่องมือฟรีที่ดีสำหรับการวิเคราะห์ตัวชี้วัดโค้ด
นี่คือข้อความที่ตัดตอนมาจากเว็บไซต์ทางการของ SourceMonitor:

  • รวบรวมเมตริกในซอร์สไฟล์แบบพาสทรูเดียวที่รวดเร็ว
  • วัดเมตริกสำหรับซอร์สโค้ดที่เขียนใน C ++, C, C #, VB.NET, Java, Delphi, Visual Basic (VB6) หรือ HTML
  • รวมเมทริกระดับวิธีการและฟังก์ชันสำหรับ C ++, C, C #, VB.NET, Java และ Delphi
  • บันทึกเมตริกในจุดตรวจเพื่อเปรียบเทียบระหว่างโครงการพัฒนาซอฟต์แวร์
  • แสดงและพิมพ์เมตริกในตารางและแผนภูมิ
  • ทำงานภายใน Windows GUI มาตรฐานหรือภายในสคริปต์ของคุณโดยใช้ไฟล์คำสั่ง XML
  • ส่งออกเมตริกเป็นไฟล์ XML หรือ CSV (ค่าที่คั่นด้วยเครื่องหมายจุลภาค) สำหรับการประมวลผลเพิ่มเติมด้วยเครื่องมืออื่น ๆ

สำหรับ. NET ข้างNDependซึ่งเป็นเครื่องมือที่ดีที่สุดฉันสามารถแนะนำvilได้

เครื่องมือต่อไปนี้สามารถทำการวิเคราะห์แนวโน้ม:


SourceMonitor ดูเหมือนจะเป็นเครื่องมือสำหรับ Windows เท่านั้น มีสิ่งที่คล้ายกันสำหรับระบบปฏิบัติการอื่น ๆ (Linux, BSD, Mac)?
Mnementh

ฉันเป็นนักพัฒนา windows ฉันไม่รู้จักเครื่องมือดังกล่าวสำหรับพวก FOSS บางทีคุณอาจลองเรียกใช้ SourceMonitor ภายใต้ Wine emulator?
aku

2
ตอนนี้มีเครื่องมือประเภท NDepend สำหรับ C ++, CppDepend
Goosey เมื่อ

SourceMonitor ไม่ใช่การใช้งานเชิงพาณิชย์เท่านั้น
Scott 混合

2
@Kevin 混合理论อ่านใบอนุญาตอย่างละเอียด - คุณสามารถใช้งานได้ในทุกสภาพแวดล้อมที่คุณไม่สามารถขายได้ "นั่นคือคุณอาจใช้ไฟล์ปฏิบัติการนี้เป็นส่วนหนึ่งของความพยายามในการพัฒนาซอฟต์แวร์ของคุณเอง (เชิงพาณิชย์หรืออื่น ๆ ) แต่คุณไม่สามารถขายได้ ... "
นาตาลีอดัมส์

12

Sonarเป็นเครื่องมือที่คุณต้องพิจารณาโดยเฉพาะอย่างยิ่งสำหรับโปรเจ็กต์ Java อย่างไรก็ตามมันจะรองรับ PHP หรือ C / C ++, Flex และ Cobol code

นี่คือภาพหน้าจอที่แสดงเมตริกบางอย่างในโครงการ:

ข้อความแสดงแทน http://sonar.codehaus.org/wp-content/uploads/2009/05/squid-metrics.png

โปรดทราบว่าคุณสามารถลองใช้เครื่องมือได้โดยใช้ไซต์สาธิตที่http://nemo.sonarsource.org


เห็นได้ชัดว่า SO จะไม่ให้ฉันแก้ไขลิงก์ - ลิงก์ควรเป็น: nemo.sonarsource.org
Natalie Adams


8

ฉันกำลังมองหาเครื่องมือ / ปลั๊กอินตัวชี้วัดรหัสสำหรับ IDE ของฉัน แต่เท่าที่ฉันรู้ว่าไม่มี (สำหรับคราสนั่นคือ) ที่แสดงกราฟของความซับซ้อนในช่วงเวลาที่กำหนด อย่างไรก็ตามฉันพบปลั๊กอิน eclipse metricsมันสามารถจัดการ:

  • ความซับซ้อนของ Cyclomatic ของ McCabe
  • ข้อต่อที่มีประสิทธิภาพ
  • ขาดการทำงานร่วมกันในวิธีการ
  • บรรทัดของรหัสในวิธีการ
  • จำนวนฟิลด์
  • จำนวนระดับ
  • จำนวนคนในพื้นที่
  • จำนวนพารามิเตอร์
  • จำนวนงบ
  • วิธีการถ่วงน้ำหนักต่อคลาส

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

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


4

โปรดทราบว่าสิ่งที่คุณวัดคือสิ่งที่คุณได้รับ loc ไม่ได้พูดอะไรเกี่ยวกับผลผลิตหรือประสิทธิภาพ

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

otoh .. http://www.crap4j.org/เป็นเมตริกที่อนุรักษ์นิยมและมีประโยชน์มาก มันกำหนดความซับซ้อนที่สัมพันธ์กับความครอบคลุม


2
ให้คะแนนโปรแกรมเมอร์ตามบรรทัดความคิดเห็นและคุณจะได้รับ ... บรรทัดความคิดเห็น
EML


3

เกี่ยวกับเครื่องมือNDขึ้นอยู่กับ 82 รหัสเมตริกที่แตกต่างกันตั้งแต่จำนวนบรรทัดของรหัสไปจนถึงอันดับวิธีการ (ความนิยม) ความซับซ้อนของวงจรการขาดการเชื่อมโยงกันของวิธีการครอบคลุมเปอร์เซ็นต์ (สกัดจาก NCover หรือ VSTS) ความลึกของการสืบทอด .. .

ด้วยระบบกฎ NDepend ยังสามารถค้นหาปัญหาและประมาณการหนี้สินทางเทคนิคซึ่งเป็นโค้ดเมตริกที่น่าสนใจ (จำนวนความพยายามในการพัฒนาเพื่อแก้ไขปัญหาเทียบกับระยะเวลาในการพัฒนาที่เสียต่อปีเพื่อให้ปัญหาไม่คงที่)

ตัวชี้วัดทั้งหมดเหล่านี้จะ detailled ที่นี่


2

หากคุณอยู่ในพื้นที่. NET Developer Express ' CodeRushจะให้ LOC, Cyclomatic Complexity และ (ค่อนข้างยอดเยี่ยม, IMHO) การวิเคราะห์ความซับซ้อนในการบำรุงรักษาของโค้ดแบบเรียลไทม์

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


2

Atlassian FishEye เป็นอีกหนึ่งเครื่องมือที่ยอดเยี่ยมสำหรับงานนี้ มันทำงานร่วมกับระบบควบคุมแหล่งที่มาของคุณ (ปัจจุบันรองรับ CVS, SVN และ Perforce) และวิเคราะห์ไฟล์ทั้งหมดของคุณด้วยวิธีนั้น แม้ว่าการวิเคราะห์จะค่อนข้างพื้นฐานและผลิตภัณฑ์เองก็เป็นเชิงพาณิชย์ (แต่ราคาสมเหตุสมผลมาก IMO)

นอกจากนี้คุณยังสามารถรับส่วนเสริมที่เรียกว่า Crucible ซึ่งอำนวยความสะดวกในการตรวจสอบโค้ดแบบเพียร์


2

สำหรับ Visual Studio .NET (อย่างน้อย C # และ VB.NET) ฉันพบว่าStudioToolsฟรีมีประโยชน์อย่างยิ่งสำหรับเมตริก นอกจากนี้ยังเพิ่มจำนวนของคุณสมบัติที่พบในเครื่องมือเชิงพาณิชย์เช่นReSharper


2

Code Analyzerเป็นเครื่องมือง่ายๆที่สร้างเมตริกประเภทนี้

ข้อความแสดงแทน
(ที่มา: teel.ws )


3
แม้ว่า GUI จะดูดี แต่เมตริกที่สร้างขึ้นก็ดูไร้ประโยชน์เช่น "ช่องว่างบรรทัดต่อไฟล์"?
kizzx2



1

ฉันอยากจะแนะนำCode Metrics Viewer Exentionสำหรับ Visual Studio

มันง่ายมากที่จะวิเคราะห์วิธีแก้ปัญหาในครั้งเดียวและทำการเปรียบเทียบหากคุณก้าวหน้า ;-)

อ่านเพิ่มเติมที่นี่เกี่ยวกับคุณสมบัติ


0

ในหน้า PHP ฉันเชื่อว่าตัวอย่างเช่นphpUnderControlมีเมตริกผ่านphpUnit (ถ้าฉันจำไม่ผิด)

โปรดทราบว่าเมตริกมักมีข้อบกพร่อง ตัวอย่างเช่นผู้เขียนโค้ดที่กำลังแก้ไขปัญหาเล็กน้อยจะสร้างโค้ดได้มากขึ้นและจะดูดีกว่าบนกราฟของคุณมากกว่าผู้เขียนโค้ดที่เจาะประเด็นที่ซับซ้อน


0

หากคุณกำลังติดตามการวิเคราะห์แนวโน้มการวัดนอกเหนือจาก SLOC มีความหมายหรือไม่?

แม้ว่าคุณจะทำ grep สำหรับการลากเส้นกึ่งโคลอนและนับจำนวนบรรทัดที่ส่งคืนสิ่งที่คุณได้รับคือความสอดคล้องในเทคนิคการวัด SLOC ด้วยวิธีนี้สามารถเปรียบเทียบการวัดของวันนี้กับการวัดของเดือนที่แล้วได้อย่างมีความหมาย

ฉันไม่เห็นว่าแนวโน้มของ McCabe Cyclometric Complexity จะให้อะไร? ฉันคิดว่าควรใช้ CC มากขึ้นสำหรับภาพรวมของคุณภาพเพื่อให้ข้อเสนอแนะแก่นักพัฒนา

แก้ไข: Ooh. เพียงแค่นึกถึงการวัดอื่น ๆ ที่อาจเป็นประโยชน์ ความคิดเห็นเป็นเปอร์เซ็นต์ของ SLOC และความครอบคลุมการทดสอบ ซึ่งคุณไม่ต้องการปล่อยให้หลุดมือ การกลับมาติดตั้งใหม่ทั้งสองอย่างนี้ไม่เคยเทพเท่าการทำ "ในช่วงเวลาที่ร้อนแรง!"

HTH.

ไชโย

ปล้น


0

Scitools 'เข้าใจมีความสามารถในการสร้างเมตริกโค้ดจำนวนมากสำหรับคุณ ฉันไม่มีประสบการณ์เกี่ยวกับคุณสมบัติการวัดโค้ดมากนัก แต่คุณสมบัติการวิเคราะห์แบบคงที่โดยทั่วไปนั้นดีและราคาก็สมเหตุสมผลมาก การสนับสนุนทำได้ดีเยี่ยม


0

Project Code Meterให้รายงานประวัติการพัฒนาที่แตกต่างกัน (ในรูปแบบ Excel) ซึ่งจะแสดงเมตริกความคืบหน้าการเข้ารหัสของคุณใน SLOC เวลาและเปอร์เซ็นต์ผลผลิต (การประมาณเวลาขึ้นอยู่กับความซับซ้อนของวัฏจักรและเมตริกอื่น ๆ ) จากนั้นใน Excel คุณสามารถสร้างกราฟที่คุณต้องการได้อย่างง่ายดาย

ดูบทความนี้ซึ่งอธิบายทีละขั้นตอน: http://www.projectcodemeter.com/cost_estimation/help/FN_monsizing.htm


0

สำหรับ Java คุณสามารถลองใช้เครื่องมือของเราQualityGateที่คำนวณเมตริกซอร์สโค้ดมากกว่า 60 รายการติดตามการเปลี่ยนแปลงทั้งหมดตามเวลาและยังให้คะแนนโดยรวมสำหรับการบำรุงรักษาของซอร์สโค้ด

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