【发布时间】:2018-11-09 20:02:53
【问题描述】:
我正在(终于!)为我的全新 C++ 项目设置代码覆盖率监控。由于我需要一些高级 C++20 功能(读取、协程),我使用 clang 6 作为编译器。
现在,我跟随this guide 了解如何为您的项目进行基本代码覆盖,一切都像魔术一样工作。如果我这样做:
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
我在终端上收到一份漂亮的彩色报告,告诉我哪些内容被覆盖,哪些未被覆盖。
到目前为止一切顺利!我以为我已经接近我想要的了,但是当我试图将报告上传到codecov.io 时,痛苦就开始了。
我尝试了一些方法,包括:
在我的
coverage文件夹上运行他们的https://codecov.io/bash脚本,希望它可能会赶上我的test.profdata。没有骰子,这是有道理的,因为即使llvm-cov也需要可执行文件的路径才能运行。使用
export功能:运行llvm-cov export --instr-profile=coverage/test.profdata ./test.out时,我得到一个漂亮的JSON 文件(通过终端)。我尝试将输出放入coverage.json文件中,该文件实际上已上传,但随后 codecov 只是说解析它时出错,没有更多信息。
我感到完全迷失了。他们网站上的一切似乎都是黑盒式的,我只是不明白如何完成任何不完全符合他们可以管理的案例的事情。
我怎样才能让它与 codecov 一起使用?如果 codecov 无法处理我的报告,是否有任何其他等效的在线代码覆盖率可以用来让它工作?
【问题讨论】:
标签: code-coverage codecov llvm-cov