Voice in the Gentle Wind

ตุลาคม 9, 2007

Crap4j : ตัววัดโค้ดห่วย

Filed under: Testing/TDD/BDD — deans4j @ 12:27 am

วันนี้ไปเจอมา สะดุดก็ตรงชื่อมันนี่แหละ คอนเซปต์อ้างว่าโค้ดห่วยดูแลยากมักสอดคล้องกับโค้ดที่ผ่านการทดสอบมาไม่เพียงพอ crap4j (Change Risk Analysis and Prediction for Java) [ยังอุตสาห์หาชื่อมาจับได้] เป็นเครื่องมือวัดความห่วยของโค้ดโดยพิจารณาจากความซับซ้อนของเมธอดและค่าการครอบคลุมของบททดสอบ (test coverage) ในเมธอด โดยมีสูตร v.0.1 ว่า

 

CRAP(m) = comp(m)^2 * (1 – cov(m)/100)^3 + comp(m)

comp(m) เป็นผลการวัดความซับซ้อนของเมธอด m ส่วน cov(m) เป็นการวัดการทำ test coverage เมธอด ผลลัพธ์ที่ได้คือคะแนนความห่วยของเมธอดนั้น จากสูตรเพราะฉะนั้นถ้าเมธอดยิ่งซับซ้อนเท่าไหร่ การทำ test coverage ก็ต้องทำอย่างจริงใจมากขึ้นเท่านั้น ตารางข้างล่างบ่งบอกความสัมพันธ์วิกฤตก่อนจะพิจารณาว่าเมธอดนั้นห่วยหรือไม่

คะแนนความซับซ้อนของเมธอด         % test coverage วิกฤตเมธอดห่วย
------------------------------        --------------------------------
0 – 5                                   0%
10                                     42%
15                                     57%
20                                     71%
25                                     80%
30                                    100%
31+                                   ไม่มีทางที่ test coverage ใดๆ จะทำให้เมธอดที่ซับซ้อนขนาดนี้หลุดพ้นจากคำว่า ห่วย ไปได้

ผู้ประพันธ์ให้ความเห็นว่าที่ระดับโปรเจกต์หากมี crap เมธอดเกิน 5% ให้พิจารณาได้เลยว่าโปรเจกต์นั้น crap ตามไปด้วย 😉

ถ้าอยากเล่นกับ crap4j ตอนนี้มี Eclipse plug-in ให้ลอง prototype ดูได้

ที่มา – Artima

สร้างเว็บไซต์หรือบล็อกฟรีที่ WordPress.com.