2009-05-08 9 views
21

मैंने हाल ही में अपने कोड कवरेज को देखने के लिए एलसीओवी का उपयोग शुरू किया। यह एक अच्छा उपकरण है।क्या एक या दो निर्देशिकाओं में lcov कोड कवरेज रिपोर्ट को फ़ोकस करने का कोई तरीका है?

एक बात जो मैं देख रहा हूं वह यह है कि यह उन सभी फ़ाइलों के लिए कोड कवरेज रिपोर्ट जेनरेट करता है जिनमें मैं दिलचस्पी नहीं ले रहा हूं। उदाहरण के लिए, यह मुझे बढ़ावा देने के लिए कोड कवरेज रिपोर्ट देगा और mysql ++ फ़ाइलें।

क्या एलसीओवी को केवल विशिष्ट फाइलों के लिए कवरेज रिपोर्ट उत्पन्न करने के लिए मजबूर करने का कोई आसान तरीका है? ,

 
/usr/bin/lcov -q -c -i -b . -d .obj -k src/ -k include/ -o app_base.info 

{run unit tests now} 

/usr/bin/lcov -q -c -b . -d .obj -k src/ -k include/ -o app_test.info 
/usr/bin/lcov -q -a app_base.info -a app_test.info -o app_total.info 
/usr/bin/genhtml -q -o lcov_output_directory app_total.info 

हालांकि इस नहीं करता:

मैं बहुत तरह -k पैरामीटर का उपयोग करने की कोशिश की है (मतलब है कि मैं केवल "शामिल हैं" और "src" निर्देशिका के लिए कवरेज फ़ाइलें चाहते हैं।) काम नहीं लग रहा है। रिपोर्ट अभी भी मुझे सभी बाहरी फाइलें दिखाती है। किसी भी सुझाव की बहुत सराहना की जाती है। धन्यवाद!

उत्तर

25

lcov एक कमांड लाइन तर्क --remove का समर्थन करता है जो आप पूछ रहे हैं।

+9

'--extract' विकल्प और अधिक उपयोगी हो सकता है। सबकुछ के साथ ट्रेसफाइल उत्पन्न करें, और उसके बाद केवल उन निर्देशिकाओं को निकालें जिन्हें आप दूसरी ट्रेसफाइल में रखते हैं। – Dan

+1

[इस पृष्ठ] पर एक नज़र डालें (http://qiaomuf.wordpress.com/2011/05/26/use-gcov-and-lcov-to-know-your-test-coverage/) जो बहुत उपयोगी है --remove उपयोग का उदाहरण। –

2

एक संभावित दृष्टिकोण यह है कि कौन सी फाइलें कवरेज झंडे (-फ्रोफाइल-आर्क्स -फेस्ट-कवरेज) के साथ संकलित की जाती हैं। आप चयनात्मक जिसके बारे में फ़ाइलों परीक्षण उपकरण के साथ निर्माण कर रहे हैं होने के लिए अपने मेकअप फाइल सिस्टम इंजीनियर नहीं करना चाहते हैं, तो निम्नलिखित चाल आप के लिए काम कर सकते हैं:

  • उपकरण के बिना अपने आवेदन का निर्माण करें।
  • स्रोत के लिए .o फ़ाइलों को निकालें जिन्हें आप
  • उपकरण चालू करना और पुनर्निर्माण करना चाहते हैं। केवल हटाए गए ऑब्जेक्ट फ़ाइलों को उपकरण के साथ पुनर्निर्मित किया जाएगा।
  • भागो केवल लक्षित gcov कलाकृतियों, जो आँख बंद करके lcov स्क्रिप्ट द्वारा खपत होती है उत्सर्जक क्षेत्रों में

यह परिणाम चाहिए lcov।

27

मैंने अनचाहे फ़ाइलों को बाहर करने के लिए - निर्देशिका के साथ - बाहरी बाहरी ध्वज का उपयोग किया।

आदमी से बाहरी की परिभाषा:

बाहरी स्रोत फ़ाइलें फ़ाइलें जो निर्देशिका --directory या --base-निर्देशिका द्वारा निर्दिष्ट से एक में स्थित नहीं हैं।

तो मेरी आदेश इस तरह देखा:

$ lcov --directory src -c -o report.info --no-external 
Capturing coverage data from src 
Found gcov version: 4.2.1 
Scanning src for .gcda files ... 
Found 4 data files in src 
Processing src/C####.gcda 
    ignoring data for external file /usr/include/c++/4.2.1/bits/allocator.h 
+0

वह 'lcov' 1.10 में है, नहीं? – jackyalcine

+0

दाएं, इसे 1.10 में जोड़ा गया है, देखें: http://ltp.sourceforge.net/coverage/lcov/changes.php – peetasan

+0

हाँ, उबंटू उपयोगकर्ताओं के लिए बेकार है, यह अभी तक 'उग्र' या 'सॉसी' के लिए भंडार में नहीं है। मैं '--extract' विधि का उपयोग कर रहा हूं लेकिन यह जीवन को इतना आसान बना देगा। – jackyalcine

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

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