मानते हैं कि "विभिन्न विकल्पों के साथ संकलित" से आपका मतलब है कि आप इस तरह संकलित करते हैं कि आप एलसीओवी (जैसा कि k0n3ru द्वारा उल्लिखित) की मदद से पूर्व प्रसंस्करण के बाद अलग-अलग आउटपुट प्राप्त करते हैं, मैं इसे करने में सक्षम था। जो foo कॉल करता है और परिणाम प्रिंट
#include "sut.h"
#include <limits.h>
int foo(int a) {
#if defined(ADD)
a += 42;
#endif
#if defined(SUB)
a -= 42;
#endif
return a;
}
sut.h केवल foo की घोषणा प्रदान करने के साथ, और test.c में एक साधारण मुख्य,: यहाँ फ़ाइल sut.c में नमूना कोड है। फिर, आदेशों की इस क्रम के साथ मैं sut.c के लिए 100% कवरेज के साथ एक total.info फ़ाइल बनाने के लिए कर रहा था:
> g++ --coverage -DADD test.c sut.c -o add.out
> ./add.out
> lcov -c -d . -o add.info # save data from .gdda/.gcno into add.info
> g++ --coverage -DSUB test.c sut.c -o sub.out
> ./sub.out
> lcov -c -d . -o sub.info # save again, this time into sub.info
> lcov -a add.info -a sub.info -o total.info # combine them into total.info
> genhtml total.info
कौन सा तो sut.c के लिए निम्न परिणाम दिखाता है:
संपादित करें (इस भाग को जोड़ने के लिए मुझे याद दिलाने के लिए ग्लुटटन के लिए धन्यवाद): कोबर्टुरा एक्सएमएल आउटपुट में lcov प्रारूप में total.info फ़ाइल से जाकर "lcov से cobertura XML कनवर्टर" की सहायता से यहां संभव होना चाहिए (हालांकि मैंने कोशिश नहीं की है): https://github.com/eriwen/lcov-to-cobertura-xml
तथ्य यह है कि कवरेज जानकारी में विलय संभव है, हालांकि, निश्चित रूप से इसका मतलब यह नहीं है कि ऐसा करने का एक अच्छा विचार है: कवरेज, आईएमओ, परीक्षण सूट की गुणवत्ता के बारे में केवल जानकारीपूर्ण मूल्य सीमित है। अलग-अलग प्रीप्रोसेसर आउटपुट से कवरेज परिणाम विलय करने से यह मूल्य और भी कम हो जाएगा।
ऐसा इसलिए है क्योंकि डेवलपर्स के परिदृश्यों के बारे में जानने के लिए संभावनाएं कम नहीं की जाएंगी: सशर्त संकलन का उपयोग करके कोड की नियंत्रण संरचना और डेटा प्रवाह प्रीप्रोसेसर आउटपुट के बीच काफी भिन्न हो सकता है - कवरेज जानकारी जो ओवरलेइंग से होती है 'विभिन्न प्रीप्रोसेसर आउटपुट के लिए टेस्ट रन से परिणाम नतीजों की सार्थक व्याख्या को असंभव बना सकते हैं।
स्रोत
2016-01-31 22:18:13
एलसीओवी यह करता है। तो एलसीओवी परियोजना से कोई भी मदद कर सकता है। – k0n3ru
@ k0n3ru, lcov कुछ मध्यवर्ती प्रारूप में डेटा मर्ज करें। – Gluttton
एलसीओवी के साथ समस्या यह है कि मेरे पास अब XML कोबर्टूरा प्रारूप नहीं है। –