2011-02-04 12 views
8

में कोड कवरेज को जोड़ने से पहले, मैं यह सुनिश्चित करना चाहता हूं कि कोड कोड कवरेज रिपोर्ट के साथ स्वचालित रूप से या मैन्युअल रूप से इसका परीक्षण किया गया हो, लेकिन वहां बहुत सारे विरासत कोड हैं जो ' टी स्वचालित परीक्षण नहीं है, और मेरे परिवर्तन से प्रभावित नहीं होगा।संस्करण नियंत्रण

क्या कोई ऐसा उपकरण है जो एक कोड कवरेज रिपोर्ट के साथ एक संस्करण नियंत्रण उपकरण से भिन्नता को पार कर सकता है और सुनिश्चित कर सकता है कि जो कुछ भी बदला गया है, वह चलाया गया है?

मुझे एहसास है कि कोड कवरेज के साथ, यह सुरक्षा की झूठी भावना दे सकता है, और इस तरह से कुछ और भी, लेकिन मुझे लगता है कि यह कोशिश करने लायक होगा। मैं गिट और PHP का उपयोग करता हूं - मैंने जो रन चलाया है उसे ब्राउज़ करने के लिए मैंने XCache के कोड कवरर इंटरफ़ेस का उपयोग किया है, और यह उपयोगी है, लेकिन यह बहुत अच्छा होगा अगर कुछ गिट प्रतिबद्ध या पुश टाइम पर स्वचालित रूप से चलाया जा सके।

+0

प्रोग्रामर.स्टैकएक्सchange.com पर माइग्रेट करने के लिए वोटिंग – Mchl

उत्तर

3

गीट diffs के लिए, diff-cover नामक एक उपकरण है, जो कवरेज की जांच कर सकता है। यह git diff के आउटपुट के साथ कोबर्टुरा एक्सएमएल कवरेज रिपोर्ट और तुलना करता है। इसके बाद यह अंतर में लाइनों के लिए कवरेज जानकारी की रिपोर्ट करता है। जब तक

$ diff-cover coverage.xml 

यह भी एक सीआई सर्वर के साथ एकीकृत करने के लिए बहुत आसान है,:

उचित कवरेज xml फ़ाइल को देखते हुए, आप master शाखा की तुलना में अपने परिवर्तन के कवरेज की जांच करने के इस आदेश का उपयोग कर सकते हैं क्योंकि यह आपको जेनकिंस में $GIT_PREVIOUS_COMMIT जैसे तुलना करने की आवश्यकता के साथ प्रदान कर सकता है।

+0

PHP यूनिट परीक्षण चलाते समय आपको कोबर्टुरा एक्सएमएल प्रारूप कैसे मिलता है? '--coverage-clover = cover.xml' के साथ इस टूल का उपयोग करते समय यह' एट्रिब्यूट एरर 'के साथ त्रुटियों से बाहर निकलता है: कोई नहीं टाइप करें' ऑब्जेक्ट में कोई विशेषता 'प्रतिस्थापन' नहीं है –

3

आप continuous integration बिल्ड सर्वर स्थापित कर सकते हैं (excellent, free build servers बहुत सारे हैं)। निर्माण चरणों में से एक कोड कवरेज चल रहा होगा। आप इसे विरासत कोड को अनदेखा करने और गैर-विरासत कोड के लिए कवरेज की गणना करने के लिए सेट अप कर सकते हैं। फिर कवरेज < xx% कवर करने में विफल होने के लिए इसे सेट अप करें। या अगर पिछले निर्माण से कवरेज% घटता है तो भी असफल हो जाता है।

+1

अच्छा विचार; प्रत्येक चेकइन या पुश पर कोड कवरेज जैसे भारी काम करने से वर्जन नियंत्रण का उपयोग करने के लिए और अधिक दर्दनाक होता है, इसलिए लोग इससे नफरत करेंगे। इसके बजाए, लोगों को मुख्य लाइन में धक्का न दें; निरंतर एकीकरण सर्वर (मुझे गिटबिल्डर पसंद है) में लोगों की शाखाओं का परीक्षण करें और फिर निरंतर एकीकरण को मंजूरी मिलने के बाद ही उन शाखाओं को मुख्य लाइन में विलय करें। – apenwarr

+1

मेरे प्रश्न को फिर से पढ़ना, मैंने इसे गलत पर जोर दिया। मुद्दा यह नहीं है कि यह प्रतिबद्ध समय पर चलता है और मुझे काम करने से रोकता है। मुद्दा यह है कि मैं सुनिश्चित कर सकता हूं कि मैंने भाग लिया है, हालांकि मैंने इसे पूरा करने से पहले सभी कोड बदल दिए हैं। प्रतिबद्ध/पुश समय पर ऑटो-रन होने में सक्षम होने के कारण वास्तविक आवश्यकता नहीं, केवल मामूली बोनस था। – rjmunro

+0

@rjmunro: मुझे पता है कि मेरा जवाब बिल्कुल ठीक नहीं है जो आप पूछ रहे हैं, लेकिन मुझे लगता है कि यह उतना करीब है जितना आप प्राप्त कर सकते हैं। –

संबंधित मुद्दे