问题标签 [gcovr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
76 浏览

c++ - 为多个 cpp 文件生成 GCOV 报告

我在一个文件夹中有 3 个文件。one.cpp,one.hppmain.cpp. one.hpp有一个类声明。one.cpp在同一个命名空间下的类中定义了函数。我从 main 中的类调用函数并包括one.hpp在 main 中。如何使用 gcov 编译和运行所有这些文件以生成覆盖率?

我尝试生成单独的目标文件并创建一个可执行文件。没用

0 投票
2 回答
1791 浏览

c - 当两个可执行文件为同一个源文件运行时,.gcda 文件覆盖率信息没有得到更新

共有三个文件u1.c , u2.c 和 common.c

ut1.c 的内容

ut2.c 的内容

common.c的内容


编译步骤:-

执行步骤:-

现在,当运行gcov common.c时,只有 fun2 覆盖范围即将到来。

0 投票
1 回答
159 浏览

code-coverage - gcovr 5.0 --html-details 报告中没有颜色

我一直在使用该gcovr模块生成月度报告。我在 docker 上工作,所以每次我都使用我的 Linux 容器上的命令下载gcovr模块。pip3最近下载模块后发现版本gcovr已经从4.2to升级了5.0,之前的命令都不能正常使用了。

用于生成报告的早期命令:

使用gcovr 5.0上述命令时,会引发以下错误:

然后,根据上述错误的建议,我使用了以下命令:

但是,我相信上面的命令并不完全正确,并且使用上面的命令,生成的报告格式不正确,并且*.css在相应的文件夹中生成了很多不需要的文件。

如下图所示,颜色没有按照“图例”中定义的百分比突出显示:

gcovr 5.0 报告:

0 投票
1 回答
134 浏览

cmake - CMake 不会为源文件生成代码覆盖率报告

我有以下项目结构:

主 CMakeLists.txt 的内容:

test/CMakeLists.txt 的内容:

还会生成代码覆盖率报告。但它报告了TestTCPAcceptor.cpp我不想要的测试文件。我想要覆盖源文件(TCPAcceptor.cpp)。我应该在哪里更改以生成源文件而不是测试文件的报告。任何帮助,将不胜感激。

以下是 html 代码覆盖率报告。 在此处输入图像描述

0 投票
0 回答
104 浏览

c++ - 当少数测试用例失败时如何生成完整的 GCOV 报告?


我需要生成测试覆盖率报告,并且我观察到当所有谷歌测试用例都通过时,只有 GCOV 生成覆盖率报告。但是现在很少有测试用例失败了。有没有办法用失败的测试用例生成测试覆盖率报告?

平台详情:
操作系统 - Ubuntu 18.04
语言 - C++17
测试框架 - Google 测试 (gtest) Cmake - v3.21.2

这是错误的屏幕截图。

在此处输入图像描述

请建议。

谢谢。

0 投票
0 回答
33 浏览

c++ - 使用 CMake 为 gcov 配置合适的目标

我已按照此链接(https://jhbell.com/using-cmake-and-gcov)将 gcov 集成到 CMake 中。但它只有在所有测试用例都通过时才有效。我的几个 Google 测试用例都失败了,所以 cmake 停止生成覆盖率报告。 在此处输入图像描述

有没有办法改变 CMake 的构建系统行为?

0 投票
0 回答
43 浏览

gcovr - 为什么gcovr会生成空报告

gcovr,尽管提供了完整的参数列表,但生成空报告?

命令:gcovr -r /home/<username>/Projects/ --object-directory <Path to Build Directory>

结果:

0 投票
1 回答
117 浏览

c++ - gcovr 未显示未触及的头文件的代码覆盖率

对于仅标头库,我具有以下结构

现在test1.cpp只使用. header1.h_ _ _ _ 我还想显示 0% 的覆盖率,因为它代表了测试覆盖的代码的更准确表示。test1.cpp--coveragegcovr-r ../includeheader1.h
header2.hheader3.h

0 投票
1 回答
23 浏览

regex - gcovr 和正则表达式的问题

我正在尝试将来自多次运行的特定文件的覆盖率数据合并到一个“报告”中。在每个项目中,我为不同的文件生成测试覆盖率,每个文件都在一个单独的项目文件夹中,然后最后我挑选并选择要包含在我的最终项目中的文件。如果我使用以下命令行,在其中选择带有 --filter [完整路径和文件名] 的每个文件,它会完美运行,并且我会得到一个仅包含这些文件的组合报告。我还看到它在日志中选择了文件,因为我启用了如下所示的 -v 选项。

gcovr -g -k -s --html --html-details -o code_coverage_summary2.html -r . --filter firmware/crc32/crc_unit_tests.X/mcc_generated_files/boot/boot_verify_crc32.c --filter firmware/sha256/sha_unit_tests.X/mcc_generated_files/boot/boot_verify_sha256.c --filter firmware/checksum/checksum_unit_tests.X/mcc_generated_files/boot/boot_verify_checksum16.c --filter firmware/command_processor/bootloader_pic_tb.X/mcc_generated_files/boot/boot_process.c -v > log4.txt

从上面运行的日志文件(之前有很多行)

(之后很多很多行)

我还有更多文件要添加,我真的不想为每个唯一的路径和文件名设置一个特定的过滤器。我想要的是对所有包含该模式的文件的过滤器 boot_verify*.c。我尝试了如下所示的不同正则表达式,但它们都没有返回选择的文件。

为了解决这个问题,我尝试了一个下面只有一个文件名的正则表达式,即使这样也没有用。

我真的很想让通配符模式和特定的文件名模式正常工作。我究竟做错了什么?

0 投票
0 回答
67 浏览

gcov - gcov 生成正确的输出,但 gcovr 没有

在此处运行 gcovr 的设置示例:https ://gcovr.com/en/stable/guide.html#getting-started我可以构建文件并从运行中看到以下输出gcovr -r .

如果我gcov example.cpp直接运行,我可以看到生成的 .gcov 数据是正确的:

我不确定这个 gcov 输出和它的 gcovr 解释之间的脱节在哪里。

我尝试降级到较旧的 gcovr 版本,在其他项目上运行命令,并切换 python 版本,但没有看到任何不同的行为。

我的 gcov 和 gcc 来自 Xcode 命令行工具。gcovr 已安装 pip(在带有 python 3.8.5 的 pyenv 中)

编辑:添加详细输出: