【问题标题】:How to get coverage information for each run on Gcov (or Gcovr)?如何获取 Gcov(或 Gcovr)上每次运行的覆盖率信息?
【发布时间】:2018-03-13 17:59:39
【问题描述】:

我正在尝试获取每个测试用例的覆盖率信息(以及总覆盖率)。但是由于.gcda文件会在程序每次运行时被合并,除非文件被删除/移动是不可能的。

为每个新的测试用例执行删除.gcda文件的问题是我必须再次重复整个过程才能获得所有测试用例的覆盖率信息。如果我有 2000 个测试用例,我必须运行我的程序 4000 次。

至于移动.gcda 文件,我必须合并所有.gcda 文件。是否可以将多个 gcda 文件与 Gcov(或 Gcovr,因为我将其用于 XML 输出)合并?

显然 lcov has a merging feature 但 AFAIK 它不支持 xml 输出。

【问题讨论】:

  • 我认为gcov-tool merge 可以合并来自两个目录的分析数据,但我对它还不够熟悉,无法编写答案。请注意,gcov-tool 似乎比您链接的问题更年轻。
  • @amon 它有效!我很惊讶我的任何搜索结果都没有得到gcov-tool。它使用起来非常简单,但有几件事对我来说不是很清楚,比如“权重因子”或“在线/离线生成”。介意你把它作为你的答案以便我接受吗?
  • 您可以根据自己的经历自行回答,或为您链接的问题写下答案。然后可以将此问题作为重复项关闭。

标签: gcc gcov lcov gcovr


【解决方案1】:

gcov 可以在gcov-tool 的帮助下合并两次运行的覆盖率数据:

$ gcov-tool merge dir1 dir2

(默认情况下,结果将存储在merged_profile文件夹中)。

gcov-tool 的一个问题是它一次只能应用于两个目录(而您似乎有数千个目录)。您可以使用 gcov-tool-many 包装器来解决此问题。

【讨论】:

    猜你喜欢
    • 2021-09-26
    • 1970-01-01
    • 2015-01-12
    • 2023-01-17
    • 2015-01-07
    • 2017-07-15
    • 2019-02-25
    • 2015-08-10
    • 2015-02-02
    相关资源
    最近更新 更多