2012-11-28 8 views
5

मैं ऐप्पल एलएलवीएम कंपाइलर 4.1 का उपयोग कर एक्सकोड 4.5 पर चल रहे आईओएस प्रोजेक्ट पर कोड कवरेज डेटा फाइल (.gdca और .gcno) उत्पन्न कर रहा हूं।आईओएस के लिए gcovr का उपयोग कर कोबर्टुरा प्रारूप xml फ़ाइलों को कैसे उत्पन्न करता है?

फ़ाइलें लाइब्रेरी/डेवलपर/Xcode/DerivedData/दर्शक-evgaabclrjcouydwveuptwroeofm के तहत बनाया जा रहा है/निर्माण/मध्यवर्ती/viewer.build/कवरेज-iphonesimulator/viewer_generic/viewer_generic.build/वस्तुओं सामान्य/i386।

सभी (.o, .d, .dia, .gcda, .gdno) फ़ाइलें इस निर्देशिका के अंतर्गत हैं। कोई उप फ़ोल्डर्स नहीं हैं।

मैं कवर स्टोरी का उपयोग कर व्यक्तिगत .gcda फ़ाइलों को खोलने में सक्षम हूं। अब मैं एक रिपोर्ट जेनरेट करना चाहता हूं जिसे कोबर्टुरा का उपयोग करके देखा जा सकता है।

मैं इसके लिए gcovr का उपयोग करने की कोशिश कर रहा हूं। gcno: टर्मिनल पर मैं ऊपर फ़ोल्डर

Command: gcovr -r `pwd` -x -v 

Output: 
(Several lines of similar output as below) 
Running gcov: 'gcov /Users/abc/Library/Developer/Xcode/DerivedData/viewer-evgaabclrjcouydwveuptwroeofm/Build/Intermediates/viewer.build/Coverage-iphonesimulator/viewer_generic/viewer_generic.build/Objects-normal/i386/FILE_NAME.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /Users/abc/Library/Developer/Xcode/DerivedData/viewer-evgaabclrjcouydwveuptwroeofm/Build/Intermediates/viewer.build/Coverage-iphonesimulator/viewer_generic/viewer_generic.build/Objects-normal/i386' in '/Users/abc/Library/Developer/Xcode/DerivedData/viewer-evgaabclrjcouydwveuptwroeofm/Build/Intermediates/viewer.build/Coverage-iphonesimulator/viewer_generic/viewer_generic.build/Objects-normal/i386' 
    Parsing coverage data for file /Users/abc/Documents/Perforce/DPS-MacBookPro/depot/sandbox/Viewer-Labatt/Blue/viewers/ipadviewer/iphone/apps/viewer/Classes/view/zooming/FILE_NAME.mm 
    Filtering coverage data for file /Users/abc/Documents/Perforce/DPS-MacBookPro/depot/sandbox/Viewer-Labatt/Blue/viewers/ipadviewer/iphone/apps/viewer/Classes/view/zooming/FILE_NAME.mm 
    Gathered coveraged data for 0 files 
    <?xml version="1.0" ?> 
    <!DOCTYPE coverage 
     SYSTEM 'http://cobertura.sourceforge.net/xml/coverage-03.dtd'> 
    <coverage branch-rate="0.0" line-rate="0.0" timestamp="1354144430" version="gcovr 2.4 (r2774)"> 
     <sources> 
      <source> 
       /Users/abc/Library/Developer/Xcode/DerivedData/viewer-evgaabclrjcouydwveuptwroeofm/Build/Intermediates/viewer.build/Coverage-iphonesimulator/viewer_generic/viewer_generic.build/Objects-normal/i386 
      </source> 
     </sources> 
     <packages/> 
    </coverage> 

मैं एक चेतावनी देख रहा हूँ करने के लिए मिल गया संस्करण '404', '402' पसंद करते हैं

कृपया मेरी मदद यह पता लगाने क्यों gcovr रिपोर्ट उत्पन्न करने में असमर्थ है।

+0

हाय, क्या आप यह काम करने में सक्षम थे? –

उत्तर

6

टीएल; डॉ: कोड कवरेज फाइलें जो एलएलवीएम आउटपुट जीसीओवीआर द्वारा अपेक्षित अपेक्षाओं से नई हैं। यदि आप लिंक संस्करण (संस्करण 2.4) के साथ gcovr के अपने संस्करण को प्रतिस्थापित करते हैं, तो इसे काम करना चाहिए। शायद।

एलएलवीएम से पहले, एक्सकोड ने जीसीसी को इसके कंपाइलर के रूप में इस्तेमाल किया। जीसीसी में 'gcov' नामक एक उपकरण शामिल था, जिसने उन सभी फ़ाइलों को उत्पन्न किया, .gcno, .gcda और उनके जैसे।

फिर, मैक जीसीसी संस्करण 4.2 के साथ पूर्वस्थापित (और अभी भी) आया था। तो एक्सकोड आपके प्रोजेक्ट को जीसीसी 4.2 के साथ संकलित करेगा, और उसके बाद जीसीओवी संस्करण 4.2 चलाएगा, जो 4.2 संस्करण वाली टेस्ट कवरेज फाइलें उत्पन्न करेगा। यह gcovr के लिए ठीक काम करता है, क्योंकि प्री-2.0 अल्फा संस्करण gcov 4.2 के साथ दिमाग में लिखा गया है।

लेकिन जब ऐप्पल एलएलवीएम पर स्विच किया गया, तो चीजें गिलहरी से चली गईं। यदि आप अपनी लक्षित सेटिंग्स में 'जेनरेट टेस्ट कवरेज फ़ाइलें' ध्वज सेट करते हैं, तो एलएलवीएम भी जीसीओवी-स्टाइल टेस्ट कवरेज फाइलों को आउटपुट करता है। लेकिन, एलएलवीएम जीसीओवी 4.4 फाइलों को आउटपुट करने के लिए डिफ़ॉल्ट है, 4.2 नहीं।

This person यह विचार था कि अगर हम फाइलों के 4.2 संस्करण को आउटपुट करने के लिए एलएलवीएम को बता सकते हैं (मुझे लगता है कि यह तकनीकी रूप से सक्षम हो सकता है), तो यह समस्या हल करेगा। यह शायद सच है, लेकिन मुझे नहीं पता कि यह कैसे करना है।

हालांकि, मुझे अपने लिए एक समाधान मिल गया। मैं टर्मिनल खोल दिया, और gcovr की मेरी संस्करण की जाँच:

gcovr --version 

यह मुझे बताया कि gcovr की मेरी संस्करण वास्तव में 2.0 प्री-रिलीज़ gcovr किया गया था। यह संस्करण परीक्षण कवरेज फ़ाइलों के gcov 4.4 संस्करणों का समर्थन नहीं करता है।

तो मुझे एक ऐसा संस्करण मिला जो करता है।

यहाँ पृष्ठ पर इन्हें होस्ट किया गया है है: https://software.sandia.gov/trac/fast/wiki/gcovr

और यहाँ स्क्रिप्ट खुद के लिए लिंक है: https://software.sandia.gov/trac/fast/export/2800/gcovr/trunk/scripts/gcovr

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

+0

यह सवाल का उत्तर कैसे देता है? –

+0

यह व्यापक रूप से प्रश्न का उत्तर देता है। जवाब न केवल चेतावनी के आसपास काम करने के बारे में बताता है, यह बताता है कि चेतावनी क्यों मौजूद है। –

+0

@ गार्डनर आत्मविश्वास के वोट के लिए धन्यवाद। डैनियल, आप सही हैं, जवाब बिल्कुल संक्षेप में नहीं है। मैंने शीर्ष पर एक छोटा संस्करण जोड़ा है। – churowa

1

क्या आप अपनी ऑब्जेक्ट निर्देशिका पथ को सही तरीके से निर्दिष्ट कर रहे हैं? Gcovr प्रलेखन के अनुसार

--object-directory = OBJDIR: निर्देशिका को निर्दिष्ट करें जिसमें gcov डेटा फ़ाइलें हैं। gcovr * .gcda फ़ाइलों और निर्देशिका के बीच पथ की पहचान करने में सक्षम होना चाहिए जहां जीसीसी मूल रूप से चलाया गया था। आम तौर पर, gcovr सही ढंग से अनुमान लगा सकते हैं। यह विकल्प gcovr के सामान्य पथ का पता लगाने को ओवरराइड करता है और जीसीसी से जीसीडीए फ़ाइल (यानी जीसीसी के '-ओ' विकल्प को पारित किया गया था), या जीसीडीए फ़ाइल से पथ जीसीसी की मूल कार्य निर्देशिका में पथ निर्दिष्ट कर सकता है।

आपके प्रोजेक्ट की रूट निर्देशिका के तहत चलाए जाने पर निम्न आदेश मेरे लिए काम करता है।

gcovr -r। --object-निर्देशिका path_to_coverage_files -x> coverage.xml

कहाँ path_to_coverage_files निर्देशिका जहां सभी अपने (ओ, .D, .dia, .gcda, .gdno) फ़ाइलें हैं।

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

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