首页 > 解决方案 > 基于clang源的覆盖:显示没有覆盖的文件

问题描述

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

例如,假设我有 libfoo 包含

file1.cpp
file2.cpp
file3.cpp

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

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

标签: c++code-coverageclang++

解决方案


libFoo 是静态库吗?如果是这样,当您将程序链接到它时,您需要在 libFoo.a 周围放置-Wl,--whole-archive和放置。-Wl,--no-whole-archive

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


推荐阅读