Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从llvm cov生成.gcov文件?_Llvm_Code Coverage_Xcode7_Llvm Cov - Fatal编程技术网

如何从llvm cov生成.gcov文件?

如何从llvm cov生成.gcov文件?,llvm,code-coverage,xcode7,llvm-cov,Llvm,Code Coverage,Xcode7,Llvm Cov,我已经在Xcode 7上创建了一个生成代码覆盖率数据的项目 在其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-iphone

我已经在Xcode 7上创建了一个生成代码覆盖率数据的项目

在其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
文件?

根据苹果的说法,gcov不属于Xcode 7覆盖支持的一部分。Gcov是gcc遗留下来的,直到出现替代品为止。显然,他们放弃了传统的gcov文件格式支持,转而支持新的中间格式——profdata。我自己做了研究,并没有发现任何工具可以将数据转换回gcov,但确实有。Slather能够以JSON、CoberturaXML、HTML和普通测试生成覆盖率报告。它还能够提供与工作服等流行服务的集成。目前,它也仅适用于gcov,但他们已打开问题并等待PR请求以支持profdata。它们通常移动得很快,所以很可能很快就会合并到master中

此外,如果您将决定编写自己的工具,有多种方法可供您审阅:

  • 从llvm cov show转换纯文本输出
  • 通过以下方式转换profdata的二进制格式
  • 帮助Slather家伙将交叉转换从他们的模型引入gcov,一旦他们将在数据支持中合并

我试过公关部门的Slather,并在一篇博文中描述了我的经历:。这几乎是完美的,但我确实从llvm cov和slather获得了不同的覆盖率,所以它可能需要一些改进。