问题标签 [lcov]

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 投票
0 回答
474 浏览

c++ - LCOV 代码覆盖率帮助 - 与以前的运行进行比较

有什么方法可以使用 lcov 或 gcov 来提高代码覆盖率,就像我想比较以前运行的代码覆盖率一样?

对整个编码运行代码覆盖是没有用的。我希望只对修改的特定文件进行代码覆盖。

0 投票
0 回答
1358 浏览

gcov - 如何为源树中的差异文件运行 Gcov/Lcov?

如何使用lcov --diff选项为源视图中的更改差异生成代码覆盖率报告?我有一个源视图,我能够为源视图中的几个模块生成 lcov 日志文件和 html 报告。但是,我正在寻找一个选项来为源树中引入的更改的差异进行代码覆盖率报告。我遇到了lcov --diff选择。有人可以指导我如何使用此选项吗?由于我使用此选项生成代码覆盖率没有任何区别。以下是尝试的步骤:

  • .info无需在源代码树中进行任何修改即可生成代码覆盖率数据(文件)。
  • 修改源代码树。
  • 获取带有-u选项的差异文件。
  • --diff使用选项再次生成代码覆盖率数据。例如。--diff <.info file>
0 投票
1 回答
1310 浏览

c++ - 如何合并多个版本的 gcda 文件?

我正在使用 gcov 获取我的应用程序的覆盖率信息。但是,我的应用程序有 3 个实例同时运行,创建了 3 个版本的“gcda”文件。有没有办法在我的覆盖信息文件中合并相同“gcda”文件的不同版本。

我想以覆盖信息为例。

0 投票
2 回答
1593 浏览

code-coverage - Lcov 覆盖范围不一致

lcov大约一个月前开始使用。覆盖计数似乎不一致。第一次运行报告的线路覆盖率约为 75%,而第二次运行报告的线路覆盖率仅为 19%。两次运行都使用了一些测试套件。我在lcov --remove. 有什么建议么?

lcov:警告:在跟踪文件 all.info 中发现负数

这有什么好担心的吗?

0 投票
3 回答
2221 浏览

c++ - 有没有办法调用纯虚拟类的“删除析构函数”?

我在 Ubuntu Trusty 上使用 C++11 和 g++4.8。

考虑这个片段

调用使用

我使用 gcov 生成我的代码覆盖率报告。它报告带有符号的析构函数_ZN6ParentD0Ev永远不会被调用,而_ZN6ParentD2Ev被调用。

回答构造函数符号GNU GCC (g++) 的双重发射:为什么它会生成多个 dtor?报告这_ZN6ParentD0Ev是删除构造函数。

有没有在类上调用这个“删除析构函数”的情况Parent

附属问题:如果没有,有没有办法获得 gcov/lcov 代码覆盖工具(在使用 gcov 与 CMake/CDash 的详细指南的回答之后使用?)在其报告中忽略该符号?

0 投票
2 回答
3584 浏览

makefile - 使用 CMake 将 *.gcno 和 *.gcda 文件添加到 make clean 规则

我有类似这样结构的项目:

主要CMakeLists.txt文件是:

CMakeLists.txt对于测试是:

为了处理测试覆盖率报告,我将自定义目标添加到test/CMakeLists.txt

所有这些代码都按预期正常工作。工作流程如下所示:

但现在我想将测试覆盖工件添加到make clean规则中。我尝试将此代码添加到test/CMakeLists.txt

但是这种方法不能按预期工作(对我来说)。当调用cmake ..工件尚不存在时,因此变量Coverage_DATA为空,这需要cmake ..在运行测试后调用。这看起来很难看(对我来说)。

所以我的问题是:如何将测试覆盖工件添加到make clean规则中?

0 投票
1 回答
1404 浏览

unit-testing - 如何在交叉编译环境中使用lcov。?

我正在对设备驱动程序进行单元测试,因为我需要使用 gcov 和 lcov 工具来生成报告。我在本机机器上编译了我的代码,并且完美生成了 .gcno 文件。然后我在基于 arm 的板上执行了我的输出文件并且 gcda 文件也正确生成。然后我将这些文件带到我的本机并生成了 .gcov 文件。

但是,当我对该文件使用 lcov 时,它会显示诸如“/usr/src/geninfo 第 2414 行中的负长度”之类的错误。

1.那么,为此我需要做什么.?。2.还有一个问题是我正在使用“arm-none-gnueabi-”工具链(2011.03),它有单独的gcov,但可执行文件中不存在lcov。是否可以使用lcov。?如果是的话如何使用...?...在​​此先感谢。

0 投票
1 回答
527 浏览

objective-c - lcov 是否生成中间 .gcov 文件?

我将lcov与一个 Objective-C 项目和XcodeCoverage脚本一起使用,我得到了一份关于我的代码覆盖率的漂亮 html 报告。

但是,我想“保留”中间.gcov文件(如果有的话)以将它们提供给另一个工具。类似于gcovr--keep的选项。lcov是否提供这样的选项?它是否生成任何中间文件?.gcov

我确定我在文档中遗漏了一些明显的东西。谢谢。

0 投票
1 回答
7997 浏览

c - gcov generates empty coverage for c

I'm trying to collect code coverage for the project that has c++ and c code both on Ubuntu.

I use '-fprofile-arcs' and '-ftest-coverage' values as CXXFLAGS and CFLAGS; '-lgcov' as LINKFLAGS.

Common C project structure is:

src contains sources of static library.

unit_tests dir contain tests written with googletest framework e. g. tests of kind

After the build googletest binary that should contain static library to test inside of it is launched.

Building and running of the project binaries results in generating of *.gcno and *.gcda files. However my C coverage results are empty (C++ is generated well).

lcov command has the folloiwng format:

Logs of lcov show the following for C-related gcda files:

gcov did not create any files for "my_c_gcda_location/*.gcda"`

There are also errors of kind:

*.gcda:stamp mismatch with notes file

Should I specify some additional parameters or perform some additional actions to get coverage results for C? Or what can be the reason of these issues?

0 投票
0 回答
1489 浏览

c++ - lcov 与 googletest 单元测试的 gcov 覆盖结果不匹配

我试图通过为souce文件创建googletest单元测试然后使用gcov获取覆盖结果,最后使用lcov生成html文档来收集库文件foobar.cpp的覆盖结果。

我已经让单元测试和 gcov 结果正常工作但 lcov 从来没有描述正确的覆盖结果,完全省略了我的 foobar.cpp .gcov 结果?

我有一个单元测试平台,基本上是这样设置的:

目录:

一切都从unittest/运行,我 make ,在这个文件夹中unittest/ $ make生成一个可执行的foobar_test 。main()在googletest /src/gtest_main.cc文件中。我的 Makefile 基于 googletest 并具有以下值得注意的设置:

生成文件:

CXXFLAGS += -g -O0 --coverage -fprofile-arcs -ftest-coverage -Wall -Wextra -pthread LDFLAGS = -lpthread -lgcov foobar_test : foobar.o foobar_test.o gtest_main.a $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $^ -o $@

我运行一次可执行文件$ ./foobar_test。这会生成 .gcda 以匹配每个源的 .gcno(总共 4 倍:foobar、foobar_test、gtest_main 和 gtest-all)。

然后$ gcov foobar.cpp仅在 foobar.cpp 上运行(我也尝试过类似$ gcov *.cpp的替代方法......仅使用 foobar_test.cpp 不起作用)。这会产生标准输出,其中包括一堆 /usr/lib 废话,还有我的结果:文件 '../foobar.cpp'; 执行的行数:80 行的 61.25%;..`并创建我的 .gcov 文件。

检查我的 .cpp.gcov 文件,它显示了 61.25% 的行的良好命中率,如上所述。此时我有 4x .gcda、4x 、gcno 和大约 20x 其他 .gcov 文件。

现在,当我在这里尝试使用 lcov 时,lcov --directory . -c -o result.info它出错了。

lcov 结果:

在 a 之后查看 lcov 输出$ genhtml report.info --output-directory report && firefox report/index.html仅显示大约 5 个不包含任何 foobar* 文件的目录?

我尝试了多种组合$ gcov []cpp以及$ lcov --base-directory [] --directory [] -c -o无济于事。还尝试软链接一些源文件,没有帮助。

我的设置或命令需要改变什么?欢迎评论者提出更好的解决方案。