2011-10-06 12 views
11

मैं php undercontrol और कोड ब्राउज़र रिपोर्ट इसPHPUnit और बकवास सूचकांक

public function getFoo() 
{ 
    return $this->_foo; 
} 

गेटर/सेटर इकाई परीक्षण के अंतर्गत आते हैं, जटिलता की तरह हर सेटर/गेटर यानी कोड पर कुछ बकवास सूचकांक त्रुटि उपयोग कर रहा हूँ कोई नहीं है क्योंकि कोई/के लिए/स्विच/foreach नहीं है। तो मुझे उस कोड के लिए 1 का क्रैप इंडेक्स क्यों मिलता है ???

पीएस: स्वयं का जवाब स्वयं हो सकता है क्योंकि जटिलता कोई नहीं है लेकिन मेरा मुख्य मुद्दा यह है कि प्रत्येक गेटर/सेटर क्रैप इंडेक्स की वजह से चेतावनी उत्पन्न करता है, इसलिए क्रैप बराबर बनाने के लिए phpunit/php कोड कवरेज बताने के लिए वैसे भी है 0 जटिलता सूचकांक के साथ फ़ंक्शन के लिए 0 तक।

+0

हम phpUnderControl से जेनकींस में स्विच किए गए। यह विकास के तहत बहुत अधिक विन्यास योग्य और सक्रिय रूप से है, और PHP परियोजनाओं के लिए एक परियोजना टेम्पलेट है। यह आपको थ्रेसहोल्ड क्रैप मान सेट करने की अनुमति देता है जो चेतावनियों को ट्रिगर करेगा और विफलताओं का निर्माण करेगा। –

उत्तर

22

न्यूनतम बकवास स्कोर 1, नहीं 0. है इसका कारण यह है बकवास के लिए एल्गोरिथ्म

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

है और एक समारोह के लिए न्यूनतम cyclomatic जटिलता (COMP) मूल्य से एक है। तो समस्या phpunit में नहीं है, लेकिन जो भी एक समस्या के रूप में 1 के क्रैप ध्वजांकित कर रहा है।

सामान्य रूप से, आप अपने क्रैप थ्रेसहोल्ड को कहीं भी लगभग 5, कहीं भी कम सेट करना चाहते हैं और आप जटिल कोड कवरेज मीट्रिक (और 100% के लिए शूट) का उपयोग कर सकते हैं क्योंकि जटिलता कारक का वजन कम होता है। > = 30 का मतलब है कि कोई भी परीक्षण आपकी विधि को क्रोधित नहीं कर सकता है।

cyclomatic जटिलता हाथ गणना की जा आम तौर पर (लेकिन वहाँ एक से अधिक परिभाषा है) कर सकते हैं के रूप में:

  • समारोह कॉल के लिए 1 अंक जोड़ने
  • हर पाश के लिए 1 अंक जोड़ने
  • 1 अंक जोड़ने प्रत्येक शाखा के लिए
+0

पर नोटिस करने के लिए परेशान है, आप सही हैं, न्यूनतम 1 है ... php_codebrowser का एक बग प्रतीत होता है जो कि ठीक होने पर भी उन पंक्तियों को हाइलाइट करता है। https://github.com/mayflowergmbh/PHP_CodeBrowser/issues/50 – RageZ

+0

तीन विधियों के लिए 3 के स्कोर वाले कक्षा के लिए 12 के क्रैप के बारे में क्या देखें? (मुझे लगता है कि यह वापसी पथों की संख्या के कारण है) – MrMesees

1

क्या यह वास्तव में एक चेतावनी है? आम तौर पर चेतावनियों के लिए दहलीज 1 से अधिक (शायद लगभग 30) निर्धारित होती है। एक अच्छा SO पोस्ट here है जो दिखाता है कि संख्या की गणना कैसे की जाती है।

"बकवास (बदलें जोखिम विश्लेषण और भविष्यवाणियों) सूचकांक लिए बनाया गया है: वहाँ Alberto Savoia के अनुसार, बकवास सूचकांक के निर्माता 30.

की बकवास के लिए मेरी PHPUnit सेटअप में कुछ हार्डकोडेड मूल्यों प्रतीत हो रहा है कोड के मौजूदा निकाय को बनाए रखने के लिए आवश्यक प्रयास, दर्द और समय की मात्रा का विश्लेषण और भविष्यवाणी करें। "

न्यूनतम क्रैप संख्या 100% कवरेज के साथ कोड के लिए चक्रवात जटिलता होगी। विचार यह है कि जटिल कोड में परिवर्तन सरल कोड में परिवर्तनों की तुलना में समस्याएं पैदा करने की अधिक संभावना है।

+0

असल में यह एक नोटिस है, लेकिन प्रत्येक सिंगल गेटर और सेटर – RageZ