2012-01-04 15 views
14

मैंने एलएलवीएम 3.0 के साथ एक्सकोड 4.2 पर कोड कवरेज सेट करने के लिए Claus's post का पालन किया। मैं परीक्षण कवरेज फाइलों को देखने में सक्षम हूं, लेकिन वे केवल मेरे यूनिट टेस्ट क्लास के लिए हैं, न कि मेरे वास्तविक प्रोजेक्ट क्लासेस। मैं उत्पन्न टेस्ट कवरेज फ़ाइलें और हाँ मेरा मुख्य लक्ष्य पर करने के लिए साधन कार्यक्रम प्रवाह की स्थापना की है की कोशिश की, लेकिन वह मदद नहीं की, के रूप में यह निम्न त्रुटि के साथ विफल:एक्सकोड 4.2 के साथ कोड कवरेज - लापता फाइल

fopen $ UNIX2003 से कहा जाता है function llvm_gcda_start_file

स्पष्टीकरण के लिए, मुझे नहीं लगता कि यह भी सही दृष्टिकोण है - मैंने अभी यह देखने की कोशिश की कि यह मेरे प्रोजेक्ट कक्षाओं पर कोड कवरेज उत्पन्न करेगा या नहीं।

इस बिंदु पर, मुझे कुछ भी कोशिश करने में खुशी होगी जो मेरे ऐप पर कोड कवरेज प्राप्त कर रहा है। कोई सुझाव?

उत्तर

24

आप लिंकर समस्या उम्मीद कर रहे हैं, profile_rt पुस्तकालय fopen और fwrite के बजाय fopen$UNIX2003 और fwrite$UNIX2003 कार्यों का उपयोग करता।

आपको बस अपनी परियोजना के लिए निम्न .c फ़ाइल जोड़ने के लिए है:

#include <stdio.h> 

FILE *fopen$UNIX2003(const char *filename, const char *mode) 
{ 
    return fopen(filename, mode); 
} 

size_t fwrite$UNIX2003(const void *a, size_t b, size_t c, FILE *d) 
{ 
    return fwrite(a, b, c, d); 
} 

इस कोड को सिर्फ मानक वाले को लापता कार्यों remaps। $UNIX2003 प्रत्यय पर

नोट:

मैंने पाया एक Apple document कह रही:

The UNIX™ conformance variants use the $UNIX2003 suffix.

Important: The work for UNIX™ conformance started in Mac OS 10.4, but was not completed until 10.5. Thus, in the 10.4 versions of libSystem.dylib, many of the conforming variant symbols (with the $UNIX2003 suffix) exist. The list is not complete, and the conforming behavior of the variant symbols may not be complete, so they should be avoided.

Because the 64-bit environment has no legacy to maintain, it was created to be UNIX™ conforming from the start, without the use of the $UNIX2003 suffix. So, for example, _fputs$UNIX2003 in 32-bit and _fputs in 64-bit will have the same conforming behavior.

तो मैं libprofile_rt 10.4 एसडीके के खिलाफ जुड़े होने की उम्मीद है।

+1

एक्सकोड 4.3.2 में मेरी परियोजना में इस .c फ़ाइल को जोड़ना और मेरे मुख्य लक्ष्य (केवल डीबग) के लिए कवरेज और वाद्ययंत्र को चालू करना! यह पहली बार है जब मैंने आईओएस विकास के लिए काम कर रहे पूरी तरह से कार्यात्मक कोड कवरेज किया है। मुझे यह भी gcovr और कोबर्टुरा प्लगइन का उपयोग कर जेनकिंस के साथ एकीकृत मिला। –

+0

यह मेरे लिए 99% समय काम करता है, लेकिन मुझे अभी भी यादृच्छिक रूप से एक दुर्घटना मिलती है। कोई विचार? हमारा परीक्षण ढांचा ऐप को 100 बार फिर से शुरू कर देगा। रातोंरात रनों पर और यह हमेशा होता है, लेकिन बहुत ही अंतराल –

+0

@ ब्रियनकिंग आपको शायद अपने दुर्घटना के विवरण के साथ एक अलग प्रश्न दर्ज करना चाहिए। – iHunter

2

मैं कवरस्टोरी http://code.google.com/p/coverstory/.gcda और .gcno फ़ाइलों के लिए एक जीयूआई का उपयोग करता हूं।

प्रलेखन इन फ़ाइलों को उत्पन्न करने के लिए आवश्यक सेटिंग्स बताता है http://code.google.com/p/coverstory/wiki/UsingCoverstory

+1

कवरस्टोरी के लिए लेवलडीबी लाइब्रेरी को संकलित करने में समस्याएं थीं मेरे लिए बहुत अच्छा काम किया। XCode 4.5 पर कोड कवरेज सक्षम करना अतिरिक्त libs जोड़ने की आवश्यकता के बिना वास्तव में आसान है। – mishod

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