【问题标题】:lcov remove option is not removing coverage data as expectedlcov remove 选项未按预期删除覆盖数据
【发布时间】:2018-09-26 07:58:47
【问题描述】:

我正在使用 lcov 生成覆盖率报告。我有一个包含此内容的跟踪文件(broker.info)(显示相关片段):

$ lcov -r broker.info
...
[/var/lib/jenkins/jobs/ContextBroker-PreBuild-UnitTest/workspace/test/unittests/orionTypes/]
EntityTypeResponse_test.cpp                    | 100%    11| 100%   6|    -    0
...

[/var/lib/jenkins/jobs/ContextBroker-PreBuild-UnitTest/workspace/test/unittests/parse/]
CompoundValueNode_test.cpp                     | 100%    82| 100%  18|    -    0
...

[/var/lib/jenkins/jobs/ContextBroker-PreBuild-UnitTest/workspace/test/unittests/rest/]
OrionError_test.cpp                            |92.1%    38| 100%   6|    -    0
...

[/var/lib/jenkins/jobs/ContextBroker-PreBuild-UnitTest/workspace/test/unittests/serviceRoutines/]
badVerbAllFour_test.cpp                        | 100%    24| 100%   7|    -    0
...

我想删除与test/unittest 文件对应的所有信息。

我尝试使用 -r 选项,根据手册页是:

-r 跟踪文件模式 --删除跟踪文件模式 从跟踪文件中删除数据。

如果您想从跟踪文件中删除特定文件集的覆盖率数据,请使用此开关。额外的命令行参数将被解释为 shell 通配符模式(请注意,它们可能需要相应地转义以防止 shell 先扩展它们)。 tracefile 中的每个文件条目 至少匹配其中一种模式的将被删除。

删除操作的结果将被写入标准输出或 -o 指定的跟踪文件。

一次只能指定-z、-c、-a、-e、-r、-l、--diff 或--summary 之一。

因此,我正在使用

$ lcov -r broker.info 'test/unittests/*' -o broker.info2

据我了解test/unittest/* 匹配test/unittest 下的文件。但是,它不起作用(请注意下面的Deleted 0 files):

Reading tracefile broker.info
Deleted 0 files
Writing data to broker.info2
Summary coverage rate:
  lines......: 92.6% (58313 of 62978 lines)
  functions..: 96.0% (6451 of 6718 functions)
  branches...: no data found

我也尝试过这种变体(结果相同):

$ lcov -r broker.info "test/unittests/*" -o broker.info2
$ lcov -r broker.info "test/unittests/\*" -o broker.info2
$ lcov -r broker.info "test/unittests" -o broker.info2

那么,也许我做错了什么?

我使用的是 lcov 1.13 版(以防数据相关)

谢谢!

【问题讨论】:

    标签: code-coverage lcov


    【解决方案1】:

    我一直在测试另一个选项,以下选项似乎可以工作,在前缀中也使用通配符:

    $ lcov -r broker.info "*/test/unittests/*" -o broker.info2
    

    也许它是 1.13 版中的新东西,因为在 1.11 版中,它似乎可以在前缀中没有通配符的情况下工作......

    【讨论】:

      【解决方案2】:

      下面提到的 lcov 命令运行良好,即使使用通配符 (lcov 1.14):

      lcov --remove meson-logs/coverage.info '/home/builduser/external/*' '/home/builduser/unittest/*' -o meson-logs/sourcecoverage.info
      

      【讨论】:

        猜你喜欢
        • 2018-08-20
        • 1970-01-01
        • 1970-01-01
        • 2019-11-05
        • 1970-01-01
        • 2015-08-16
        • 2012-09-03
        • 2023-03-08
        • 2016-02-20
        相关资源
        最近更新 更多