2014-10-20 7 views
5

मेरे पास कई यूनिट परीक्षणों के साथ सी ++/सी एप्लिकेशन है। मैं शर्त के साथ समग्र कवरेज और व्यक्तिगत परीक्षण भी प्राप्त करना चाहता हूं कि प्रत्येक परीक्षण केवल एक बार चलाया जा सकता है। प्रक्रिया के लिए जेनकिन्स कोबर्टूरा प्लगइन के लिए कवरेज का प्रारूप xml (cobertura xml) होना चाहिए।क्या कोबर्टुरा कवरेज एक्सएमएल रिपोर्ट एक साथ विलय करने के लिए वैसे भी है?

अब तक जब मैं स्रोत का उपयोग करता हूं तो संकलन और जीसीडीए फाइलों पर जीसीएनओ फाइलें उत्पन्न करता हूं। फिर xml फ़ाइल प्राप्त करने के लिए gcovr को कॉल करें।

मैं प्रत्येक इकाई परीक्षण का कवरेज बनाना चाहता हूं (इस प्रकार प्रत्येक इकाई परीक्षण के लिए कवरेज एक्सएमएल बनाना) और फिर इन एक्सएमएल फ़ाइलों को एक एक्सएमएल फ़ाइल में विलय करना चाहते हैं।

धन्यवाद! तल पर

https://github.com/cobertura/cobertura/wiki/Command-Line-Reference

:

+0

देखें: http://stackoverflow.com/questions/19792510/combine-cobertura-code-coverage-reports-of-three-separate-projects – Grzesuav

+0

दुर्भाग्यवश एप्लिकेशन काफी जटिल है और cmake स्क्रिप्ट का उपयोग करके निर्मित है, कोई चींटी/मेवेन का उपयोग किया जाता है। – x3mspeedy

उत्तर

2

मैंने python script लिखा जो कोबर्टूरा रिपोर्ट एक साथ विलय कर सकता है। यह केवल लाइन "हिट" विलय करता है और विलय करते समय विशिष्ट संकुल फ़िल्टर करने में सक्षम है।

सशर्त (शाखा-दर) कवरेज और लाइन कवरेज (लाइन-दर) प्रतिशत मान अभी तक का विलय नहीं कर रहे हैं। जेनकींस प्लगइन इन मानों को फिर से गणना करता है इसलिए इस संदर्भ में इसे लागू नहीं किया जाना चाहिए (लेकिन शायद यह होगा)।

इसके अलावा सशर्त कवरेज को आसानी से एक साथ नहीं रखा जा सकता है, इसलिए यह रिपोर्ट तब नहीं होती जब रिपोर्ट अंतिम मूल्य पर सहयोग करती है (जिसका अर्थ है कि एक फ़ाइल में हालत-कवरेज 50% (2/4) और अन्य शर्त-कवरेज 50% (2/4) अन्य दो शाखाएं हैं। परिणाम तो यह अभी भी हो जाएगा इन दो संख्याओं के अधिक होने के लिए सेट है 50% (2/4)

0

जोड़ा नहीं जा सकता टिप्पणियां तो देखते हैं।

+0

अच्छा विचार लेकिन एप्लिकेशन सी ++/सी है जिसका अर्थ है कि मैं जावा परियोजनाओं जैसे कोबर्टुरा का उपयोग नहीं कर सकता। मैं उत्पन्न नहीं कर सकता।सेर फाइलें जो जावा संरचना का वर्णन करती हैं और उन्हें मर्ज करती हैं। – x3mspeedy

1

क्षमा टिप्पणी नहीं कर सकता:

@ x3mspeedy काफी अच्छा एक स्क्रिप्ट पोस्ट करने के लिए गया था, लेकिन वे तब से थोड़ा के आसपास स्क्रिप्ट स्थानांतरित कर दिया , मैंने रिपो की खोज की और इसे यहां एक सार्वजनिक गिस्ट में खींच लिया:

https://gist.github.com/tgsoverly/ef975d5b430fbce1eb33

0

मैं समाधान भी देख रहा था, लेकिन मेरे मामले में लगभग 1000 कोबर्टुरा एक्सएमएल फाइलें थीं और सभी उपरोक्त स्क्रिप्ट इस तरह की राशि को संसाधित करने में वास्तव में धीमी थीं।

अंत में मैं merge-cobertura.py एक पाइथन लिपि के साथ आया हूं जो विलय करता है। हालांकि यह Codecov पर उपयोग किए जाने के लिए OpenCppCoverage से रिपोर्टों को मर्ज करने के लिए आवश्यक सभी चीज़ों में काफी सीमित है। तो यह किसी भी शाखा की जानकारी को अनदेखा कर लाइन हिट विलय करता है (ओपनसीपीपीओवरेज से कोई भी नहीं आ रहा है) और यह मानते हुए कि सभी कवरेज रिपोर्ट एक ही पथ के लिए हैं। यह सभी पैकेजों को एक में विलय करता है।

शायद किसी को भी यह उपयोगी लगेगा, my blog में कुछ और विवरण हैं।

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