问题标签 [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.
objective-c - GCovr 没有生成有效的报告
我想用 Cobertura 设置我的 Jenkins 来跟踪代码覆盖率。不幸的是,我无法生成有效的 xml。
我在用着:
- gcovr 2.5 预发行版 (r2774)
- Xcode 4.6.1 构建版本 4H512
我的项目正在正确生成代码覆盖率文件,但使用 gcovr 创建的报告没有用。
我用来生成报告的命令是:
这将为我创建此输出:
附加信息:
如果我删除 --object-directory 和 -r 然后我从派生数据目录执行命令,则会生成有效报告。该报告可以从 cobertura 读取,但不能显示有关源文件的任何详细信息。
python - Windows 下的 Gcovr 错误
我正在尝试使用 Gcovr 生成 C 程序结果的 HTML 文件。我已经安装了 gcov(通过 MinGW)、Python、easy_stall 和 gcovr。C:\MinGW\bin
将,C:\Python33
和添加C:\Python\Scripts
到 Windows PATH。
现在我遇到的问题(在 Windows 命令行中):
1.gcovr 命令
c:\Python33\Scripts
在使用命令执行之前,无法从任何目录中找到/执行 gcovr python gcovr
。
临时修复,重命名gcovr
为gcovr.py
?但这听起来不是正确的解决方案。
2.执行gcovr
我打电话时没有结果:
但是 gcov 给出了正确的结果。
我需要做什么才能获得正确的结果?
code-coverage - 使用 gcovr 显示零覆盖
我们尝试使用 gcovr 为我们在 Jenkins 中的 c++ 项目生成覆盖率报告。我能够让它工作,但我遇到了一个问题。gcovr 不显示覆盖率为零的文件的任何统计信息 - 它们只有 .gcno 文件,不生成 .gcda 文件,并且 gcovr 不会在结果中显示它。
所以我对整个项目有 80% 的覆盖率,但只编写了 2 个测试,实际上只有测试中涉及的源文件的覆盖率为 80%。对于大型项目,使用这样的统计数据当然没有意义。
我找到了https://software.sandia.gov/trac/fast/changeset/2766这个变更集作为这张票的解决方案https://software.sandia.gov/trac/fast/ticket/3887,但似乎不是正在工作。
我错过了什么?
ps 我使用 gcovr 3.1-prerelease
ios - 使用来自另一台机器的 xcodebuild 进行单元测试
我一直在绕圈子。基本上,我在一台机器上安装了 Jenkins,并将 Mac 服务器作为单独的 iOS 构建服务器。我需要能够运行单元测试,然后在 Mac Mini 上运行 Jenkins 的代码覆盖率。我有一个可以运行测试的脚本,当它从机器本身的命令行运行时,它可以完美运行。问题是当我尝试从 Jenkins 运行它时,实际测试没有运行。它运行整个构建过程,然后报告“测试成功”,而不实际运行任何测试。基本上,当我 ssh 进入机器时,我需要能够运行测试。
我正在使用 gcovr 为单元测试覆盖率创建 xml 文件。我考虑使用 xctool,它似乎可以运行,但只创建 gcda 文件,而不是 gcno,所以我无法让它工作。
在这一点上把我的头撞在墙上,所以任何帮助表示赞赏。
我正在运行的命令:xcodebuild -workspace MyProject.xcworkspace -scheme MyProject -sdk iphonesimulator test
在登录到机器时从命令行运行时运行良好,但在我 ssh 时不运行任何测试。
unit-testing - 是否可以使用其中的专用模板获取 C++ 头文件的覆盖率统计信息?
我希望你能帮忙。我已经花了一天时间研究这个问题,但还没有找到解决方案。
我有一个头文件,其中包含专门的模板,我想确保我的单元测试正确覆盖它。
我使用 gtest 作为我的测试框架。运行测试后,我在 CoverStory 中打开我的班级以查看统计数据。cpp文件没问题,但是h文件有问题。我可以在那里看到覆盖率,但没有代码预览。每行都说/ EOF /
这是正常的吗?我相信是的,我从未见过在 CoverStory 中正确加载头文件。
我的下一步是在结果上运行 gcovr,然后将输出 xml 文件传递到 cobertura,它甚至不识别存在的头文件。我查看了 xml 文件,也没有提到头文件。
非常感谢
jenkins - 詹金斯的 gcovr 不起作用
我正在尝试使用 Jenkins 的 gcovr 生成代码覆盖率报告,但无济于事,它不会产生结果,但如果我从终端运行它,它工作正常。这是我通过 jenkins 执行以生成相同的命令:
如果我通过终端运行相同的程序,它可以正常工作!
谢谢您的帮助!
PS:我在主机上运行詹金斯并指示它在从机上执行作业。
xcode5 - Gcovr 为 0 个文件生成覆盖率数据
我正在为 iOS 应用程序设置代码覆盖率。我正在使用 XCode 5.0.2 和 gcovr 3.1 来测试和执行 iOS 7 设备的代码覆盖率。我最初在.gcda
文件生成方面遇到了问题,但我关注了这个博客并解决了这个问题。
我已将“生成测试覆盖率文件”设置为“是”,“仪器程序流程”设置为“是”,仅用于调试模块。我还在-fprofile-arcs -ftest-coverage
“其他 C 标志”中设置了调试模块。__gcov_flush()
当应用程序终止时,我已在我的应用程序代码中添加。
现在 .gcda 文件生成没有问题。
然后我将它复制到我的主目录中的工作区。在工作区中,我尝试运行应用程序的代码覆盖率。我从命令行执行gcovr
命令,为我拥有的 252 个 gdca 文件传递–object-directory
和gcov
命令运行。最后我得到这个输出:
Gathered coverage data for 0 files
请帮助我解决问题。我花了很多时间浏览类似的问题,但没有一个解决方案奏效。
c++ - lcov 和 gcovr 选项用于忽略编译器生成的死代码
我的团队正在寻找一种方法来绕过 gcov 报告死/编译器生成代码的分支覆盖率。我注意到 gcovr 有一个选项--exclude-unreachable-branches
似乎可以满足我们的需要。此外,lcov 具有--no-markers
忽略源代码中的排除标记的选项。
这两个选项是否将编译器生成的“死代码”排除在分支覆盖范围之外?
另外,我想知道,
这两种工具有什么区别?
我们目前使用 lcov,我知道它以图形显示格式显示 gcov 信息。
python - 指定根目录时的gcovr无限循环
背景
我正在使用 python 工具gcovr
为我的一些 c 项目生成覆盖率数据。我能够毫无问题地获得覆盖率数据,但由于查找我的源文件的工具出现问题,我无法查看覆盖了哪些代码行。
在检查了生成的 XML 数据后,gcovr
我意识到该工具正在查看错误的目录以获取覆盖信息。在这种情况下,我指定了源文件的根目录,如gcovr
.
但是,当我为源文件指定目录时,gcovr
会进入无限循环。
问题
是什么导致了这个无限循环,我需要做什么来指定我的源文件所在的目录?
如果需要任何额外的信息来解决这个问题,我愿意提供我所能提供的。
cmake - CMake + Jenkins 用于未测试文件的代码覆盖
我正在寻找一种解决方案,在一个 cmake 项目中编译并在 Jenkins 下发布的所有 C 源文件中进行代码覆盖率统计。
我使用 CMake 2.8.9、gcovr 3.1、Jenkins 1.564 并尝试了许多不同版本的 gcc/gcov(4.7.2 和 >= 4.8.0)。
据我所知,我有两种不同的解决方案:
一方面,使用 gcovr 会导致可在 jenkins 下发布的 cobertura xml 文件,但我未能考虑到覆盖率统计中未发现的文件。这是因为尽管存在 .gcno(但不存在 .gcda),但 gcov 并未考虑未经测试的文件,实际上没有为仅 .gcno 文件生成 .gcov 文件,而是 gcov 打印“正在删除 ...”消息。我怀疑 gcov 已经改变了它的行为,以便 gcovr 不再处理未经测试的文件(但我从未见过它工作),但是我无法找到正确版本的 gcc/gcov 并且我尝试了很多(4.7.2 和>= 4.8.0)。
另一方面,Cmake 会考虑未经测试的文件计算正确的统计数据,但无法生成要在 jenkins 上发布的 cobertura 报告...
我需要 gcovr 中的解决方法或 cmake 覆盖到 cobertura xslt 或可以解决此问题的所有其他选项。
非常感谢您的建议
皮埃尔