CherieLi Student

lcov 覆盖率

2020-07-30
CherieLi

# 在编译的时候增加 -fprofile-arcs -ftest-coverage  
# 支持c和c++编译的覆盖率  
# g++参考  
# 生成.gcno文件  
g++ *.cpp -c -fprofile-arcs -ftest-coverage  
# 生成.gcda, --coverage/ -lgcov/ -fprofile-arcs 都可  
g++ *.o  -o test --coverage  
./test  
# 生成覆盖率文件 .info  
lcov -d . -c -o test.info  
# 排除目录 lcov -r test.info '/src/include/*' '/user/bin/*' -o new_test.info  
# 固定目录 lcov -e test.info '*/src/*' '*/lib/*' -o new_test.info  
# report  
# 生成页面, 如有其他info文件,请改成其他的info文件  
genhtml test.info -o result  
# coverage option
OPTION (ENABLE_COVERAGE "Use gcov" OFF)
MESSAGE(STATUS ENABLE_COVERAGE=${ENABLE_COVERAGE})
IF(ENABLE_COVERAGE)
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
#    SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage")
ENDIF()

编译时使用命令如下: cmake -DENABLE_COVERAGE=ON ..

UT

FILE* file 传参时,可用stdout
mock找不到的函数用 extern "C" {}

./ut --gtest_filter=*lcov_fix --gtest_repeat=20

下一篇 资源隔离绑核

Comments

Content