5

我试图将Codecov添加到我的的 CI 构建系统中。travis 脚本如下所示 :

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"

当我在本地 Linux Mint 机器上运行这些命令时,一切都按预期工作。但在特拉维斯却没有。报告如下所示:

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 record at end of file!
Found 132 data files in .
Processing unittest.dir/test/src/cstddef/offsetof_test.cpp.gcda
geninfo: WARNING: cannot find an entry for #home#travis#build#AMS21#Andres-Standard-Library#test#include#doctest.h.gcov in .gcno file, skipping file!
geninfo: WARNING: cannot find an entry for #home#travis#build#AMS21#Andres-Standard-Library#test#src#cstddef#offsetof_test.cpp.gcov in .gcno file, skipping file!
(...)
Finished .info-file creation
lcov: ERROR: no valid records found in tracefile coverage.info
Reading tracefile coverage.info
Reading tracefile coverage.info
lcov: ERROR: no valid records found in tracefile coverage.info

所以很明显这里有一个问题,但我不明白它是什么。而且我无法在本地机器上复制它并在线搜索我也找不到解决方案。
travis 和我的本地机器都使用 gcov 8.1.0。在 travis 上,我使用 lcov 1.13 和我的本地机器版本 1.12。我使用以下标志进行编译:

-Wall (... various warning flags) -m32 -g -O0 -fprofile-arcs -ftest-coverage --coverage

我将非常感谢任何解决方案或想法。

编辑:修复了问题。似乎 gcc 8 引起了一些问题。使用 gcc 7 效果很好。

4

1 回答 1

5

我遇到了类似的问题,我通过将 LCOV 更新到 1.13-4 版本解决了它(在 ubuntu 18.04 LTS 上,apt 可用的版本是 1.13-3)

于 2018-11-08T14:27:07.757 回答