2015-06-25 15 views
10

मैंने एक्सकोड 7 पर एक प्रोजेक्ट बनाया है जो कोड कवरेज डेटा उत्पन्न करता है।llvm-cov से .gcov फ़ाइल कैसे उत्पन्न करें?

अपने DerivedData फ़ोल्डर के अंदर, मैं llvm-cov show चला सकते हैं:

/usr/local/opt/llvm/bin/llvm-cov show -instr-profile Build/Intermediates/CodeCoverage/testetestes/Coverage.profdata Build/Intermediates/CodeCoverage/testetestes/Products/Debug-iphonesimulator/testetestes.framework/testetestes 

यह इस तरह एक उत्पादन का उत्पादन होगा:

/Users/marcelofabri/Desktop/testetestes/testetestes/Example.swift: 
    | 1|// 
    | 2|// Example.swift 
    | 3|// testetestes 
    | 4|// 
    | 5|// Created by Marcelo Fabri on 09/06/15. 
    | 6|// Copyright © 2015 Marcelo Fabri. All rights reserved. 
    | 7|// 
    | 8| 
    | 9|import UIKit 
    | 10| 
    | 11|class Example: NSObject { 
    1| 12| func testando() { 
    1| 13|  if let url = NSURL(string: "dasdas") { 
    1| 14|   print("ae \(url)") 
    0| 15|  } else { 
    0| 16|   print("oi") 
    0| 17|  } 
    1| 18| } 
    | 19|} 

/Users/marcelofabri/Desktop/testetestes/testetestes/OutraClasse.swift: 
    | 1|// 
    | 2|// OutraClasse.swift 
    | 3|// testetestes 
    | 4|// 
    | 5|// Created by Marcelo Fabri on 18/06/15. 
    | 6|// Copyright © 2015 Marcelo Fabri. All rights reserved. 
    | 7|// 
    | 8| 
    | 9|import UIKit 
    | 10| 
    | 11|class OutraClasse: NSObject { 
    | 12| 
    1| 13| func outroTestando() { 
    1| 14|  if let numero = Int("123") { 
    1| 15|   print("ae \(numero)") 
    0| 16|  } else { 
    0| 17|   print("oi") 
    0| 18|  } 
    1| 19| } 
    | 20| 
    | 21|} 

हालांकि, मैं .gcov फ़ाइलें प्राप्त करना चाहते हैं, यह है, क्योंकि क्या अधिकांश उपकरण का उपयोग करें। आउटपुट को पार्स किए बिना और .gcov फ़ाइल मैन्युअल रूप से बनाने के बिना ऐसा करने का कोई तरीका है?

उत्तर

17

ऐप्पल जीसीओवी के अनुसार एक्सकोड 7 कवरेज समर्थन का हिस्सा नहीं है। जीकोव जीसीसी विरासत था जो प्रतिस्थापन की उपस्थिति तक चारों ओर रहा। स्पष्ट रूप से उन्होंने नए इंटरमीडिएट प्रारूप - profdata के पक्ष में विरासत gcov फ़ाइल प्रारूप समर्थन गिरा दिया। मैंने अपने आप पर शोध किया और मुझे कोई भी उपकरण नहीं मिला जो profdata को gcov में वापस परिवर्तित करता है, हालांकि Slather from Venom है। स्लेटर गटर जेएसओएन, कोबर्टुरा एक्सएमएल, एचटीएमएल और सादे परीक्षण में कवरेज रिपोर्ट जेनरेट करने में सक्षम है। यह कवरल जैसे लोकप्रिय सेवा के साथ एकीकरण प्रदान करने में भी सक्षम है। वर्तमान में यह केवल gcov के साथ ही काम करता है, लेकिन उनके पास समस्या जारी है और पीआर अनुरोध profdata के समर्थन के लिए लंबित है। वे आमतौर पर तेज़ी से आगे बढ़ते हैं, इसलिए जल्द ही यह मास्टर में विलय हो जाएगा।

इसके अलावा

अगर आप अपने खुद के उपकरण लिखने के लिए वहाँ कई दृष्टिकोण है कि आप की समीक्षा के लिए विचार कर सकते हैं कर रहे हैं तय करेगा:

  • LLVM-cov से सादे पाठ उत्पादन की परिवर्तित profdata की द्विपदीय प्रारूप की परिवर्तित
  • दिखाने format documentation
  • सहायता उड़ा देना लोगों का पालन करते हुए एक अपने मॉडल से gcov में वापस पार coverting, जैसे ही वे profdata समर्थन में मर्ज हो जाएगा
+0

लगता परिचय lik ई काम पहले ही शुरू हो चुका है: https://github.com/venmo/slather/issues/89 –

+3

मैंने पीआर शाखा से स्लेदर को आजमाया है और ब्लॉग पोस्ट में अपने अनुभवों का वर्णन किया है: http://goo.gl/UUBrBu। यह लगभग सही है, लेकिन मुझे llvm-cov और slather से अलग कवरेज प्रतिशत मिलता है, इसलिए इसे कुछ सुधारों की आवश्यकता हो सकती है। – i4niac

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