c++ - सी++ प्रोग्राम्स




क्या हम MSTest के बिना वीएस2012 या वीएस 2010 में मूल सी++ कोड कवरेज प्राप्त कर सकते हैं? (2)

मुझे पता है यह एक पुरानी पोस्ट है, लेकिन मेरा मानना ​​है कि जवाब अब भी प्रासंगिक है।

सी # में मेरे निपटान में जो कुछ भी हुआ करता था, मुझे वास्तव में पसंद नहीं था, जब मैंने विज़ुअल सी ++ में स्थानांतरित किया था। इसके अलावा, आपके जैसे ही एमएसटीईज ने आंशिक रूप से मेरे लिए काम किया; मुझे अपने स्वयं के परीक्षण अनुप्रयोगों के लिए भी प्रयोग किया जाता है

असल में मैं जो चाहता था वह निम्नलिखित था:

  • एमएस परीक्षण या एक EXE फ़ाइल चलाएं
  • दृश्य स्टूडियो में कोड कवरेज प्राप्त करें

कुछ शोध करने के बाद, मैंने देखा कि वीएस एंटरप्राइज़ इस सुविधा का आज परीक्षण एडेप्टर के साथ समर्थन करता है।

यदि आप वीएसई पर नहीं हैं, तो मैंने देखा कि कुछ अन्य उपकरण हैं, प्रत्येक उपयोगकर्ता एक स्वतंत्र यूआई के साथ प्रदान करते हैं। निजी तौर पर मुझे ये पसंद नहीं है; मैं दृश्य स्टूडियो में अपना कवरेज चाहता हूं, अधिमानतः विजुअल स्टूडियो सामुदायिक संस्करण में।

इसलिए मैंने इस ऐडिन को खुद बनाने का फैसला किया और - जब यह वीएसई के रूप में परिष्कृत नहीं है - यह मेरे लिए चाल है

  • मैंने https://github.com/atlaste/CPPCoverage पर VSIX कोड कवरेज उपकरण लिखा था। मूल रूप से यह दृश्य स्टूडियो में हाइलाइटिंग को प्रबंधित करता है, एक क्लिक करने योग्य रिपोर्ट तैयार करता है, और समाधान एक्सप्लोरर में एकीकृत करता है।
  • कवरेज मापन के लिए स्वयं, मैं https://opencppcoverage.codeplex.com/ का इस्तेमाल करता था। असल में आप किसी भी debuggable (देशी) निष्पादन योग्य पर कोड कवरेज परीक्षण करने की अनुमति देता है आजकल, मैं अपना स्वयं का कोड कवरेज मापने के उपकरण का उपयोग कर रहा हूं (जो कि ऊपर से खुले स्रोत भी है)।

हम अपने स्वचालित प्रतिगमन परीक्षा प्रणाली के लिए कोड कवरेज का आकलन करना चाहते हैं जो काफी बड़े देशी ऐप पर चलाया जाता है। यह हमारे ऐप के इनबिल्ट स्क्रिप्टिंग का उपयोग कर एक परिष्कृत, पटकथा वाली परीक्षा प्रणाली है। इसमें हजारों टेस्ट हैं और एमएसटीईस्ट यूनिट टेस्ट द्वारा प्रतिस्थापित नहीं किया जा रहा है।

जब तक हम वीएस2012 (प्रीमियम) का प्रयोग IDE के रूप में कर रहे हैं, वहीं यह अभी भी VS2010 compilers और पुस्तकालयों के साथ संकलित है। यह जल्दी ही बदल सकता है यदि यह कोड कवरेज प्राप्त करने के लिए एक शर्त थी।

हम इस के लिए अलग-अलग बिल्ड कर सकते हैं - इंस्ट्रुमेंटिंग एक समस्या नहीं है।

मैं बस एमएस दस्तावेज पढ़ने में उलझन में हूँ, जो सभी को एक धारणा से शुरू होता है, जो आप अपने इनबिल्ट टेस्ट फ्रेमवर्क का उपयोग करके इकाई परीक्षण चला रहे हैं। ऐसा तब होता है जब मैं सामान खोजने के लिए संघर्ष नहीं कर रहा हूं जो वास्तव में पहली जगह में ALM के लिए मूल समर्थन की बात करता है!

धन्यवाद


विजुअल स्टूडियो 2012 का कोड कवरेज उपकरण पूरी तरह से परीक्षण निष्पादन प्रणाली (पूरी प्रकटीकरण से अलग है: मैंने इसे लिखा था, लेकिन माइक्रोसॉफ्ट छोड़ने के बाद टीम को कुछ अच्छी तरह से उपयोगी कार्यक्षमता हटा दी गई थी) यह वी.एस. 2012 में ग्राउंड अप से गहराई से लिखत मूल (x 86 और x86-64) और प्रबंधित कोड (.नेट और सिल्वरलाइट) के लिए फिर से लिखे जाने पर डिस्क पर एक्सेक्यूटेबल को संशोधित करने की बजाय प्रक्रिया में लोड हो जाता है।

आप "% ProgramFiles% \ Microsoft Visual Studio 11.0 \ Team Tools \ Dynamic Code Coverage Tools" में CodeCoverage.exe पा सकते हैं।

डेटा एकत्र करने के लिए:

CodeCoverage.exe collect /output:foo.coverage foo.exe foos_args

एक कॉन्फ़िगरेशन फ़ाइल (उस कोड में एक डिफ़ॉल्ट है जिसे codecoverage.config कहा जाता है) संग्रह को नियंत्रित करने के लिए निर्दिष्ट किया जा सकता है।

कवरेज डेटा का विश्लेषण करने के लिए, आप Visual Studio 2012 में foo.coverage खोल सकते हैं या विश्लेषण करने के लिए कवरेज उपकरण का उपयोग कर सकते हैं:

CodeCoverage.exe analyze /output:results.xml foo.coverage

नोट: स्थान लेने के लिए उपकरण के लिए, .pdb फ़ाइलें आपके मॉड्यूल के लिए खोजी जानी चाहिए। चूंकि आप 2010 के साथ निर्माण कर रहे हैं, वे 2012 के डीआईए के साथ काम नहीं कर सकते हैं ताकि आपको 2012 के टूल्ससेट के साथ पुनर्निर्माण करना पड़ सकता है। यदि आप मॉड्यूल को नहीं देख रहे हैं, तो आपको कवरेज विश्लेषण में, पास /include_skipped_modules का विश्लेषण कमांड में उम्मीद है; वहाँ एक "कारण" विशेषता होगी आपको यह बता रहा है कि क्यों मॉड्यूल छोड़ दिया गया था (बाहर रखा गया, कोई डीबग जानकारी आदि)।

संपादित करें: इसके अलावा, विज़ुअल स्टूडियो के पिछले संस्करणों के विपरीत, 2012 का कवरेज फ़ाइल प्रारूप पूरी तरह से स्व-निहित है। मॉड्यूल और .पीडीबी को विश्लेषण समय पर मौजूद होने की आवश्यकता नहीं है।





code-coverage