gpt4 book ai didi

c++ - gcc9 和 lcov 的覆盖范围

转载 作者:行者123 更新时间:2023-11-30 02:15:03 27 4
gpt4 key购买 nike

最近的操作系统升级使我的覆盖脚本严重失败。

lcov 1.13

gcov (GCC) 9.1.1

我的 CMake 中用于生成覆盖率数据的部分:

if ($ENV{COVERAGE})
message("Setting up for coverage")
enable_testing()
include(CodeCoverage)
setup_target_for_coverage(${PROJECT_NAME}_coverage tests coverage)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage")
endif ()

lcov我在构建测试后发出的命令: lcov --capture --directory build/ --output-file coverage.info

不幸的是现在失败了:

Capturing coverage data from build/
Found gcov version: 9.1.1
Scanning build/ for .gcda files ...
geninfo: WARNING: no .gcda files found in build/ - skipping!
Finished .info-file creation

该错误消息是有道理的,因为没有 .gcda文件 - 仅.gcno文件。我不确定它们是否具有相同的目的和/或可以与 lcov 一起使用.

我发布了nm some_binary | grep gcov并且有很多符号,其形式为:

00000000004b3520 d __gcov_._ZZZN6__pstl10__internal15__pattern_walk2IRKNS_9execution2v115parallel_policyEN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEENS8_IPiSD_EEZSt9transformIS6_SE_SG_ZN12_GLOBAL__N_150ParallelTransformTest_NoDataShouldReturnEmpty_Test8TestBodyEvEUlRKT_E_ENSt9enable_ifIXsrNS3_19is_execution_policyINSt5decayISK_E4typeEEE5valueET1_E4typeEOSK_T0_SY_SU_T2_EUlRS9_RiE_St17integral_constantIbLb0EEEESU_SX_SY_SY_SU_SZ_T3_S13_IbLb1EEENKUlvE_clEvENKUlSE_SE_E_clESE_SE_

所以我猜 CMake 仍然正确地尝试为我提供覆盖率数据。

它在 gcc 7 上运行良好如果我没记错的话。

是否有新的解决方案/CMake 标志要发出/lcov 标志要发出?或者现在已经损坏并且没有解决方法?或者也许我一直在做一些奇怪的事情?

最佳答案

我相信 GCC 9 现在默认将覆盖率数据输出为 JSON,如 change notes 中所述。 .

The gcov tool has changed its intermediate format to a new JSON format.

看起来 lcov 有一个开放的 issue用于处理这种新格式。

关于c++ - gcc9 和 lcov 的覆盖范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56718554/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com