2015-06-25 8 views
10

Ich habe ein Projekt auf Xcode 7 erstellt, das Code-Coverage-Daten generiert.Wie generiere ich .gcov Datei von llvm-cov?

Innerhalb seiner DerivedData Ordner, ich kann llvm-cov show laufen:

/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 

Dies wird eine Ausgabe wie folgt erzeugen:

/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|} 

aber ich würde .gcov Dateien bekommen, da es ist, was die meisten Werkzeuge benutzen. Gibt es eine Möglichkeit, dies zu tun, ohne die Ausgabe zu analysieren und .gcov Datei manuell zu erstellen?

Antwort

17

Laut Apple ist gcov kein Teil von Xcode 7 Coverage Support. Gcov war GCC Vermächtnis, das bis zum Erscheinen des Ersatzes herum blieb. Offenbar haben sie die alte GCOV-Dateiformat-Unterstützung zugunsten des neuen Zwischenformats - profdata - fallen lassen. Ich habe selbst recherchiert und fand keine Tools, die profdata zurück in gcov konvertieren, aber es gibt Slather from Venom. Slather kann Berichte in Gutter JSON, Cobertura XML, HTML und Test erstellen. Es ist auch in der Lage, beliebte Dienste wie Overalls zu integrieren. Momentan funktioniert es auch nur mit gcov, aber sie haben ein Problem geöffnet und eine PR Anfrage steht zur Unterstützung von profdata an. Sie bewegen sich normalerweise schnell, daher wird es wahrscheinlich bald zu Master zusammengeführt.

Auch wenn Sie Ihr eigenes Werkzeug schreiben wird entscheiden, gibt es mehrere Ansätze, die Sie für die Überprüfung betrachten kann:

  • Konvertieren von Klartextausgabe von llvm-cov zeigen
  • Konvertieren von Binär-Format von profdata durch folgende format documentation
  • Hilfe Slather Jungs eine Einführung Quercoverting aus ihrem Modell zurück in gcov, sobald sie in profdata Unterstützung
+0

Looks lik fusionieren Die Arbeit hat bereits begonnen: https://github.com/venmo/slather/issues/89 –

+3

Ich habe Slather aus der PR-Branche ausprobiert und meine Erfahrungen in einem Blogbeitrag beschrieben: http://goo.gl/UUBrBu. Es ist fast perfekt, aber ich bekomme einen anderen Deckungsgrad von llvm-cov und slather, also könnte es Verbesserungen erfordern. – i4niac