我有一个switch声明从a String和我编写的单元测试中提取一个寻址模式来覆盖,我认为是每个可能性但JaCoCo似乎跳过我的switch陈述,导致覆盖率降低.
为什么,如果我的所有case语句(包括默认值)都在测试中执行,那么该switch语句是否会被计为命中?
(参见CodeCov中显示的测试结果)
到目前为止,我对 codecov 的设置运行良好
因为我无意中推送了一个不应该推送的文件夹,
然后我合并了一个pr来删除该文件夹
这是我的codecov.yml
_____ _
/ ____| | |
| | ___ __| | ___ ___ _____ __
| | / _ \ / _` |/ _ \/ __/ _ \ \ / /
| |___| (_) | (_| | __/ (_| (_) \ V /
\_____\___/ \__,_|\___|\___\___/ \_/
Bash-1.0.3
==> git version 2.31.1 found
==> curl 7.68.0 (x86_64-pc-linux-gnu) libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 …Run Code Online (Sandbox Code Playgroud) 我正在(终于!)为我全新的 C++ 项目设置代码覆盖率监控。由于我需要一些高级 C++20 功能(读取、协程),我将其clang 6用作编译器。
现在,我按照本指南了解如何为您的项目进行基本代码覆盖,一切都像魔术一样工作。如果我做:
clang++ -fprofile-instr-generate -fcoverage-mapping test.cpp -o test.out
LLVM_PROFILE_FILE="coverage/test.profraw" ./test.out
llvm-profdata merge -sparse coverage/test.profraw -o coverage/test.profdata
llvm-cov show ./test.out -instr-profile=coverage/test.profdata
Run Code Online (Sandbox Code Playgroud)
我在我的终端上收到一份漂亮的彩色报告,告诉我哪些内容被覆盖,哪些未被覆盖。
到现在为止还挺好!我以为我已经接近我想要的东西了,但是当我试图将报告上传到codecov.io时,痛苦就开始了。
我尝试了几件事,包括:
https://codecov.io/bash在我的coverage文件夹上运行他们的脚本,希望它可能会赶上我的test.profdata. 没有骰子,这是有道理的,因为甚至llvm-cov需要可执行文件的路径才能运行。
使用export功能:运行时llvm-cov export --instr-profile=coverage/test.profdata ./test.out我得到一个漂亮的 JSON 文件(通过终端)。我尝试将输出放入一个coverage.json文件中,该文件实际上已上传,但是 codecov 只是说解析它时出错,没有进一步的信息。
我感觉完全迷失了。在他们的网站上,一切似乎都是黑箱式的,我只是不明白如何完成任何不完全符合他们可以管理的情况的事情。
我如何才能使用 codecov 进行此操作?如果 codecov 无法处理我的报告,是否还有其他等效的在线代码覆盖率可用于使其正常工作?
我正在尝试在我的公共travis存储库上设置codecov,到目前为止,还无法成功生成报告并将其上载到codecov.io。我似乎在终端上收到了一个错误的报告,说我的代码中有0%被警告覆盖了。
据我所知,我的.travis.yml和shell脚本完全符合pytest-cov和codecov文档中指定的约定。
我的travis终端包含完整的日志在这里:https : //www.travis-ci.com/jmaggio14/imagepypelines/jobs/163802897#L681
我的回购可以在这里找到:https : //github.com/jmaggio14/imagepypelines/tree/89a6bbc2fadc94a51570d80be356941df1a87a87
我的(缩短的).travis.yml文件如下:
sudo: false
language: python
python:
- 2.7
- 3.4
- 3.5
- 3.6
install:
# I removed some other lines for readability here
- pip install codecov pytest-cov hypothesis
script:
# running tests and code coverage report
- py.test --cov=imagepypelines tests/
after_success:
- codecov
Run Code Online (Sandbox Code Playgroud)
我最终收到以下警告和一条消息,指出我的测试覆盖了我的代码的0%
Coverage.py warning: No data was collected. (no-data-collected)
Run Code Online (Sandbox Code Playgroud) 我有一个具有以下结构的 Go 项目:
foo/foo.go
foo/foo_test.go
main.go
Run Code Online (Sandbox Code Playgroud)
如您所见,没有针对main.go.
我使用以下命令收集覆盖率报告:
go test ./foo ./ -coverprofile=coverage.txt -covermode=atomic
Run Code Online (Sandbox Code Playgroud)
在这里./foo并./显示在哪里寻找包裹。
问题:我将覆盖率报告发送到 codecov.io,它显示我的代码 100% 被测试覆盖。但这不是真的,因为我main.go根本没有测试。
系统似乎只计算那些明确指定测试文件的包。
问题:如何修复覆盖率报告以计算有关未测试包的信息?
注意:你可以在GitHub 上找到我的项目,真正的统计数据在这里。该项目具有不同的结构,但问题仍然存在(错误的覆盖范围)。
我正在尝试为 GitHub Actions 将运行的公共 R 包设置 codecov 监控covr::codecov。我正在查看这个 .yaml 示例(来源):
- name: Test coverage
if: matrix.r == '3.6'
run: |
Rscript -e 'remotes::install_github("r-lib/covr@gh-actions")'
Rscript -e 'covr::codecov(token = "${{secrets.CODECOV_TOKEN}}")'
Run Code Online (Sandbox Code Playgroud)
将我的 codecov 令牌放在 .yaml 文件中代替上述示例的位置对我来说安全CODECOV_TOKEN吗?
我们正在将我们的 repo 私有化,并已将我们的 CI 转移到使用 Heroku 的服务。我们现在正在努力研究如何获得代码覆盖率报告,以便我们不会与减少的覆盖率合并。我正在努力研究如何生成这样的报告,因为之前 travis 与 codecov 一起为我们处理了这个问题。
Code cov文档说 Heroku CI 不是他们支持的 CI 服务之一。而且我还没有找到有关 CodeCov 对 Heroku CI 的支持的任何信息。有谁知道是否有 Heroku 支持的免费代码覆盖工具?
我正在测试一个项目,并使用 Codecov 发布测试的覆盖率。Codecov 使用 Jacoco 生成的报告,到目前为止效果良好。Codecov 不仅显示覆盖率,还显示测试的复杂度。
我对这个复杂率有两个问题,我在文档中找不到答案:
复杂度到底是多少?Codecov 如何衡量它?
所测试的项目是一个maven多模块项目。当我在 POM 中激活 jacoco 插件的 report-aggregate-goal 时,为了聚合每个模块的报告,结果在 codecov 上不会显示复杂性:
为什么会这样呢?
我尝试将Codecov添加到我的库的CI 构建系统中。该特拉维斯脚本像这个样子:
lcov --directory . --capture --output-file coverage.info --gcov-tool gcov-8 # capture coverage info
lcov --remove coverage.info '/usr/*' --output-file coverage.info # filter out system
lcov --list coverage.info # debug info
# Uploading report to CodeCov
bash <(curl -s https://codecov.io/bash) || echo "Codecov did not collect coverage reports"
Run Code Online (Sandbox Code Playgroud)
当我在本地 Linux Mint 机器上运行这些命令时,一切都按预期工作。但在 Travis 上则不然。报告看起来像这样:
Capturing coverage data from .
Found gcov version: 8.1.0
Scanning . for .gcda files ...
geninfo: WARNING: /home/travis/build/AMS21/Andres-Standard-Library/CMakeFiles/unittest.dir/test/src/cstddef/offsetof_test.cpp.gcno: Overlong …Run Code Online (Sandbox Code Playgroud) 当我使用codecov.io记录我的Rust项目的代码覆盖率时,覆盖范围似乎不正确.
这很奇怪.
我无法提供完整的复制项目.
我正在使用Rust的标准TravisCI配置.这是我的.travis.yml:
language: rust
cache: cargo
dist: trusty
sudo: required
rust:
- stable
- beta
- nightly
matrix:
allow_failures:
- rust: nightly
script:
- cargo build --verbose --all
- cargo test --verbose --all
after_success: |
wget https://github.com/SimonKagstrom/kcov/archive/master.tar.gz &&
tar xzf master.tar.gz &&
cd kcov-master &&
mkdir build &&
cd build &&
cmake .. &&
make &&
make install DESTDIR=../../kcov-build &&
cd ../.. &&
rm -rf kcov-master &&
for file in target/debug/myproject-*[^\.d]; do mkdir -p …Run Code Online (Sandbox Code Playgroud)