我为unittest生成了html代码覆盖率。问题是它为包含预处理器中定义的所有内容生成代码覆盖率。
unittest的codecoverage位于代码覆盖率报告的 unitTest 链接中。我只需要 unitTest
我还删除了其他所有内容,并在生成代码覆盖率之前保留测试文件的gcda和gcno文件,但它仍然无济于事。执行此操作的代码是:
find obj/ ! -name '*_unittests*' -type f -delete
我尝试在include预处理器的开头和结尾添加LCOV_EXCL_START和LCOV_EXCL_STOP,如下所示,但它仍然无济于事。
LCOV_EXCL_START
#include <inttypes.h>
#include "../src/generators/buffersss.h"
#include "gtest/gtest.h"
#include <getopt.h>
LCOV_EXCL_STOP
Test code goes here.....
我在这里做错了什么?
答案 0 :(得分:2)
以下代码解决了问题
lcov --remove coverage.info '/usr/include/*' 'src/*' -o filtered_coverage.info
答案 1 :(得分:0)
对于 CMake 用户,我强烈建议使用:
https://github.com/bilke/cmake-modules/blob/master/CodeCoverage.cmake
例如宏 setup_target_for_coverage_lcov
及其 EXCLUDE
参数。