- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近的操作系统升级使我的覆盖脚本严重失败。
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/
我正在使用 Ubuntu 12、g++ 和 lcov,后者安装了 apt-get install lcov . 我正在成功编译,并使用 genhtml 生成 html 报告.行覆盖信息看起来不错,但许
是否可以为单个存储库的前端和后端测试获取单独的覆盖率报告? 似乎一种可能的方法是将 lcov 报告连接成一个,然后发送到工作服,如所述 in this question . 但是,我想知道是否有办法查
我正在尝试使用 gcc 4.8.2 和 lcov 1.10 获取 html 覆盖率以进行测试。我确定我的源文件、对象和 gcov 文件位于同一位置,并且我正在从我运行编译器的目录中运行 lcov。 我
我的工作环境 赛格温 lcov 1.13 海湾合作委员会 5.4.0 问题是 html 中的覆盖率报告告诉我们析构函数中缺少分支,但析构函数是空的。我不知道为什么。任何人都可以帮助我吗?我也尝试使用
我使用 LCOV 作为我的代码覆盖率的图形方式来告诉我我测试了多少代码,但是它包括我不关心的代码文件夹并且它使我的覆盖率低于实际应该的覆盖率是。 有没有办法排除我可以忽略一堆我不关心的 cpp 文件的
我有一个包含静态成员变量的结构。据称此成员变量的析构函数中的一行从未执行过,这是由 lcov 报告的。这一行只应在程序终止时执行。所以我猜它只是 lcov 无法计算它。 Valgrind 可以显示该行
我正在使用 lcov 和 genhtml 生成代码覆盖率报告。使用以下目录结构,我能够获得位于 tests/目录中的源文件的代码覆盖率,但无法获得我的 src/目录中的 my_file.c 文件的代码
我尝试创建覆盖率报告。我用 清除所有并覆盖。 我安装了 Boost 和 lcov。但是,当我尝试 make coverage 时,它失败并显示以下错误消息: Processing components
我正在尝试使用 lcov(v1.13,在 OS X 上,使用 clang 作为编译器)为我的测试套件生成代码覆盖率,但我遇到了一个我不知道如何解决的恼人问题。 SO 上有几个类似的问题,但我找不到这个
这个函数的末尾有哪些分支。我该如何覆盖它们? 最佳答案 您正在观察 gcc 生成的用于销毁静态存储持续时间(全局)变量的代码。 您的覆盖显示函数 foo 已被输入 3 次,但是范围末尾附近的计数器显示
我使用 lcov 在我的项目中创建覆盖率信息。但是我只能得到行覆盖和函数覆盖统计信息。 lcov version:1.10, gcov version:4.4.5 我使用的命令是: lcov -d
我该如何制作 lcov和 genhtml显示未链接/加载的文件?我用它来显示测试覆盖率,我希望看到每个源文件都出现在 HTML 报告中,即使它的覆盖率为零。这样我就可以使用 lcov 来识别缺少测试的
我遇到了 SonarQube 实例的问题。我们正在从 istanbul 打印出 lcov 信息,但是 sonarqube 找不到 lcov 信息来生成代码覆盖率。 project.properties
我开始使用 lcov大约一个月后。覆盖计数似乎不一致。第一次运行报告了大约 75% 的线路覆盖率,而第二次运行仅报告了 19%。两次运行都使用了一些测试套件。我在 lcov --remove 期间看到
什么可能导致此类错误?我目前正在使用 lcov 和 Cygwin,并且在使用 gcc 或任何其他 Linux 命令时访问/读取/写入指定路径时没有遇到任何问题。 只是为了展示我的确切过程......
我不太擅长使用 lcov 和 shell 脚本,所以这对我来说是一个学习过程。我了解制作代码覆盖率报告的基础知识,但我不知道排除某些目录的代码行。在 shell 可执行文件中,我编写了以下代码:
我有行 lcov -c -i -d 。 -o cov_init.info 从目录的零初始点捕获覆盖率数据,但我希望它忽略一些目录。我正在考虑使用条件语句,但我是使用 linux 的新手,不确定如何编写
我试图删除我的测试驱动程序文件“test.c”中的覆盖率数据。以下是我在阅读 SO 中的一些类似问题后使用的内容。 $ lcov --remove test.gcda -c -d . -o a.inf
10 [ + - ][ + - ] : 2 : Conf::~Conf() {} 11 : : 12
我的代码中有一些日志记录宏: #define LOG_MSG (pri, msg, ... ) \ if (pri > PriorityLevel ) \ printf( ms
我是一名优秀的程序员,十分优秀!