gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 01:48:58 32 4
gpt4 key购买 nike

我在 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 的情况下做到这一点?手动存档?

最佳答案

据 Apple 称,gcov 不是 Xcode 7 覆盖支持的一部分。 Gcov 是 gcc 的遗产,一直存在到替换出现。显然,他们放弃了旧的 gcov 文件格式支持,转而支持新的中间格式——profdata。我自己做了研究,没有找到任何将 profdata 转换回 gcov 的工具,但是有 Slather from Venom . Slather 能够以 Gutter JSON、Cobertura XML、HTML 和普通测试生成覆盖率报告。它还能够提供与 Coveralls 等流行服务的集成。目前它也仅适用于 gcov,但他们已打开问题并且 PR 请求未决以支持 profdata。它们通常移动得很快,因此很可能很快就会合并到 master 中。

此外,如果您决定编写自己的工具,您可以考虑多种方法进行审查:

  • 从 llvm-cov 显示的纯文本输出的转换
  • 通过以下 format documentation 转换 profdata 的二进制格式
  • 帮助 Slather 伙计们将他们的模型中的交叉转换引入 gcov,一旦他们合并到 profdata 支持
  • 关于llvm - 如何从 llvm-cov 生成 .gcov 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31040594/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com