问题标签 [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 回答
1574 浏览

macos - GCOVR 在 MAC 中给出空结果的百分比为零

我在一个文件夹中有 .gcda 和 .gcno 文件,我从中运行以下命令。

$ gcovr -r 。

在此处输入图像描述 如果我在 gcda 文件上运行 gcov,结果如下所示 ,我得到了正确的覆盖率值。

0 投票
1 回答
6131 浏览

c++ - gcovr 排除问题

我在源外构建上运行 gcovr (3.3),例如:

gcovr --root=/path/to/source --object-directory=/path/to/build

现在我想从报告中排除两个不同的东西:

1) 任何.cpp名称中包含“Test”的文件

--exclude='.*Test.*'似乎不起作用

2)目录中的所有源文件(例如/path/to/source/MyModule/

--exclude='/path/to/source/MyModule/.*'似乎不起作用。

--exclude-directories='/path/to/source/MyModule'似乎也不起作用。

我的问题

a) 有什么--exclude-directories用,因为您似乎(应该)能够排除传递给正确正则表达式的目录--exclude

b) 关于为什么--excludes 不能按预期工作的任何建议?也许这些不是正则表达式的正确种类/风格?

0 投票
1 回答
158 浏览

c++ - gcovr 文件夹级别摘要

我有一个结构如下的项目:

最高级别的覆盖率报告显示了每个直接包含代码的文件夹的摘要:

有什么方法我也可以获得不直接包含代码的级别的报告?也就是说,仅用于:

0 投票
1 回答
407 浏览

ios - 如何合并 gcovr 生成的 .gcda 文件?


在寻求解决方案之前,让我先解释一下问题。我们为我们的 iOS 应用程序进行了 Appium 自动化测试。我们认为,每个测试都应该从头开始(即应用程序安装),而不是依赖以前的测试将应用程序带到当前有问题的测试感兴趣的屏幕上。我希望这种方法是正确的。我们尝试使用此处提到的方法生成 .gcda 文件。但是干净状态方法似乎为每个测试创建多个 .gcda 文件。如何以比此处提到的方法更简单的方式合并它(看起来像多个步骤 - 如果 .gcda 文件太多,我们将需要多个步骤)。我们希望通过 Appium 进行这种覆盖,直到我们为遗留代码添加单元测试,所以我们认为不需要将这种通过 Appium 进行代码覆盖的复杂方法集成到 CI 中,所以每次我们需要覆盖时手动进行,将意味着转换所有 .gcda 到 LCOV 文件,这可能很耗时。因此这个问题。

谢谢,

稻田

0 投票
0 回答
962 浏览

gcc - Gcovr 收集了 0 个文件的覆盖数据

我正在尝试使用 gcovr 从 gcno/gcda 生成 xml 以提供 Jenkins 中的 cobertura 插件。该应用程序构建在构建机器上,并传递给在单元测试从属设备上运行的下游作业。源文件和生成的 gcno 文件也以其原始文件夹结构复制到单元测试机器。由于应用程序的构建路径和安装路径不同,我使用 GCOV_PREFIX_STRIP 和 GCOV_PREFIX 使生成的 gcda 文件最终位于与相应 gcno 文件相同的位置。我可以确认 gcda 文件是在正确的位置生成的。

Jenkins 构建主工作区位于:

该应用程序内置于:

Jenkins 单元测试从工作区位于:

源代码、gcno 和 gcda 文件位于(gcno/gcda 位于相对于相应 cpp 的名为 'o' 的子目录中):

这是通过设置实现的:

从 Jenkins 单元测试从属执行 shell(当前目录是工作区)我执行:

然而,结果是:

这很奇怪,因为似乎找到了 gcda 文件。一些详细的输出:

注意同一个 gcda 文件是如何被多次列出的,这是所有 gcda 文件的情况。目录 /var/lib/jenkins/workspace/Coverage-Unittest/BUILD/app/packages/appw/lib/model/o/ 包含 MyClass.gcda 和 MyClass.gcno 以及目录 /var/lib/jenkins/workspace/Coverage -Unittest/BUILD/app/packages/appw/lib/model/ 包含 MyClass.cpp。

该应用程序是使用带有 -coverage 标志的 gcc 5.3.0 编译的。

我希望输出 xml 包含覆盖信息,如何解决?

0 投票
1 回答
717 浏览

code-coverage - 如何使用 gcovr 获得方法级别的覆盖率?

我一直在使用 gcovr 为我的整个项目生成覆盖率数据。

我能够生成这样的摘要报告:

总计和其他所有数据,但此数据处于源级别。所以我尝试生成具有相同类型数据的 xml 格式的 xml 文件。当我最终生成具有像这样的行级覆盖率的更密集的 xml 文件时:

我仍然找不到任何方法级别。我知道 gcov 可以一次为一个文件生成方法级别覆盖率,但在我的情况下这是不可能的,因为我正在处理数千个文件,如果我尝试通过任何方式为每个文件生成数据方法会有问题。

0 投票
2 回答
474 浏览

c++ - googletest移动构造函数覆盖率

googletestgcovrwhich 结合使用会产生一些奇怪的行为。我有一个头文件foo.hgcovr声称有一些测试未涵盖的行。这些行是类定义和移动构造函数:

第 39 行是:

第 47 行是:

我已经尝试在测试主体中显式调用此函数std::move(),但无济于事。这个问题有解决方案吗,还是我坚持 99% 的覆盖率报告?

我应该注意,除了类定义和复制/移动语义(都定义为default)之外,此标头中没有任何实现;所有功能体都在foo.cpp.

0 投票
2 回答
9492 浏览

code-coverage - 如何将 gcovr 与当前/build/run 目录之外的源文件一起使用?

将输出一个空报告。

但是,如果我手动运行

我得到正确的结果

似乎gcovr没有从其他正确的gcov输出中提取覆盖范围。仅当源文件位于当前目录之外(与构建目录相同,与输出目录相同,与运行目录相同)并且gcc使用源文件的绝对路径调用 ics 时才会发生这种情况。

我怎样才能解决这个问题?

编辑

在上游 gcovr 中修复了相对路径,但看起来像绝对路径的错误。

请参阅https://github.com/gcovr/gcovr/issues/169

0 投票
1 回答
877 浏览

c++ - 分支覆盖率低,尤其是在使用 3rd 方库时。前升压

我在理解 C++ 中的分支覆盖时遇到了问题。即使对于一个简单的程序,分支覆盖率也是 50%。当我使用 boost 时,分支覆盖率低于 20%。

在此处输入图像描述

有人可以解释一下为什么会这样吗?我在用

编译器标志和gcovr生成报告。我也尝试lcov过完全相同的结果

0 投票
0 回答
231 浏览

c++ - gcovr:在某些情况下无法分析被测类

我的目的是用gcovr对我用 CMake 的 gtest 框架编写的测试执行代码覆盖率报告。

我有 2 个测试用例。一个使用“TEST”,另一个使用“TEST_F”(又名测试夹具)。

无夹具测试:

用夹具测试:

在这两种情况下都会生成 ClassUnderTest.cpp.gcno 并且内部数据似乎有效,但是当我以下列方式调用 gcovr 时:

仅在 html 报告中找到 TestCase1 的覆盖率,TestCase2 的覆盖率在 ClassUnderTest.cpp 中不可见。

可能是什么问题?

先感谢您。