nar*_*.sv 5 code-coverage github swift-package-manager codecov github-actions
我已经编写了一个Swift 包,并希望将Codecov集成为我的 CI 的一部分(使用Github Actions设置)。
这是我的.yml文件:
name: Swift
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- name: Build
run: swift build -v
- name: Run tests
run: swift test -v --enable-code-coverage
- name: Upload to Codecov
uses: codecov/codecov-action@v3.1.0
Run Code Online (Sandbox Code Playgroud)
问题是Codecov无法处理由xcodebuild或swift命令生成的报告文件。这是文档。
Codecov 建议使用其他第三方工具(例如Slather)将报告的文件转换为预期格式(.xml、.json等),但Slather与Swift Packages不兼容(仅适用于.xcodeproj或.xcworkspace项目)。
您能在这里提供帮助或建议替代方法吗?谢谢。
我最近遇到了同样的事情,但注意到 JSON 代码覆盖文件已生成,上传者只是不知道它们在哪里或如何搜索它们。
您可以通过显式位置指定它们,并且会生成一个 JSON 文件。然而,CodeCov 似乎无法处理 JSON 格式,因此您需要做额外的工作来将该死的设置转换为lcov格式。
我进行此转换的节基于CodeCov 支持论坛中的一个线程- 这有点过时,但转换的要点llvm-cov就在那里。
- name: Prepare Code Coverage
run: xcrun llvm-cov export -format="lcov" .build/debug/AutomergeSwiftAdditionsPackageTests.xctest/Contents/MacOS/AutomergeSwiftAdditionsPackageTests -instr-profile .build/debug/codecov/default.profdata > info.lcov
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: info.lcov
Run Code Online (Sandbox Code Playgroud)