clang 基于源的覆盖:显示没有覆盖的文件

clang source-based coverage: show files with no coverage

我正在使用 clang 的基于代码的覆盖检测工具构建一个库,即使用 -fprofile-instr-generate-fcoverage-mapping 标志。现在我正在设置测试和覆盖率报告。

例如,假设我有包含

的 libfoo
file1.cpp
file2.cpp
file3.cpp

这用上面的标志编译,现在我写了一个测试应用程序,testFoo,它链接到 libFoo 并练习来自 file1.cppfile2.cpp 的代码,但没有来自 file3.cpp。当我 运行 testFoo 并打印代码覆盖率 llvm-cov report ... 时,我只看到 file1.cppfile2.cpp.

的报告

如何让报告显示 file3.cpp 的覆盖率为零?

libFoo 是静态库吗?如果是这样,当您 link 您的程序反对它时,您需要将 -Wl,--whole-archive-Wl,--no-whole-archive 放在 libFoo.a 周围。

否则你只是将 file1.o 和 file2.o 放入最终输出的二进制文件中,覆盖工具将不知道 file3.o.