如何在Linux或OS X上为Swift软件包生成代码覆盖率?

mar*_*den 5 linux macos xcode swift

我正在寻找一种为使用Swift Package Manager创建的Swift包生成代码覆盖率的方法。在OS XI上,可以swift package generate-xcodeproj在Xcode上运行并运行测试套件之后使用Xcode来实现此目的,此时我已经可以使用标准的覆盖工具。

是否有任何野外工具可以使这种情况在OS X和Linux上发生?

Oli*_*son 10

这实际上可以通过传递--enable-code-coverageswift test

$ swift test --enable-code-coverage
Run Code Online (Sandbox Code Playgroud)

这将在 Linux 上生成一个.xctest.build/x86_64-unknown-linux/debug/和一个 profdata 文件,.build/x86_64-unknown-linux/debug/codecov/然后您可以将其传递给以llvm-cov生成报告。

例如

$ llvm-cov report .build/x86_64-unknown-linux/debug/PredicatePackageTests.xctest -instr-profile=.build/x86_64-unknown-linux/debug/codecov/default.profdata -use-color
Run Code Online (Sandbox Code Playgroud)

这将生成类似于以下报告的报告:

报告

查看llvm-cov report --help更多信息,它甚至可以生成 HTML 报告。

  • 我一直在寻找一种在 Travis CI 上运行的解决方案,无需 XCode,并且由于您的帖子,我得到了这个:https://github.com/devmumbles/dev-mumbles/blob/master/.travis.yml 谢谢!^^ (3认同)

Kar*_*ter 5

目前,我还不知道直接支持Linux的工具。就其价值而言,我们仍然对我们的代码覆盖解决方案感到满意,该解决方案支持可在Linux和macOS上运行的Web框架和HTTP服务器。

我们基于Swift Package Manager的项目Kitura使用Travis CI进行持续集成。每个版本将编译和运行测试两个 Linux和MacOS。我们还在Travis CI上每晚进行构建,生成覆盖率数据,然后将其上传到codecov.io生成此类报告。

在幕后,运行构建脚本swift package generate-xcodeproj,然后xcodebuild test启用代码覆盖率。代码覆盖率仅在包含的macOS构建环境上运行xcodebuild。由于我们的Linux和macOS代码路径非常相似,因此覆盖率统计数据足以满足我们的目的,并且我们仍在针对每个OS单独运行测试。

  • 我担心情况可能会如此。我会一直睁着眼睛寻求答案。如果将来有人遇到这种情况并找到替代方法,请添加答案。 (3认同)