我正在使用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跟踪文件模式 -删除跟踪文件模式 从跟踪文件中删除数据。
如果要从跟踪文件中删除特定文件集的coverage数据,请使用此开关。其他命令行参数将被解释为 shell通配符模式(请注意,可能需要对其进行相应的转义,以防止Shell首先扩展它们)。跟踪文件中的每个文件条目 至少匹配其中一种模式的内容将被删除。
删除操作的结果将被写入stdout或-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(以防万一数据相关)
谢谢!
答案 0 :(得分:1)
即使使用通配符(lcov 1.14),下面提到的lcov命令也可以正常工作:
lcov --remove meson-logs/coverage.info '/home/builduser/external/*' '/home/builduser/unittest/*' -o meson-logs/sourcecoverage.info
答案 1 :(得分:0)
我一直在测试另一个选项,以下选项似乎也可以使用,在前缀中也使用通配符:
$ lcov -r broker.info "*/test/unittests/*" -o broker.info2
也许是1.13版中的新内容,因为在1.11版中,它似乎可以在前缀中没有通配符的情况下使用...