如何合并覆盖率报告?
How to merge coverage reports?
我有一个 C 程序,我用 -fprofile-arcs -ftest-coverage flags.Then 我 运行 这个程序有 5 个不同的输入,这将覆盖 .gcda 文件并给我组合 report.But 我想要单个测试的覆盖率报告并将它们存储在一个文件夹中,当我 运行 此文件夹上的任何覆盖率工具时,我得到每个测试的报告以及组合 report.Is 有办法做到这一点吗?
gcovr
和 lcov
都可以合并来自多个 运行 的覆盖率数据,但 gcov 没有内置功能。
Gcovr 5.0 添加了 -a/--add-tracefile
选项,可用于 merge multiple coverage runs。每次测试后,使用 gcovr 创建一个 JSON 报告。之后,您可以使用 gcovr -a cov1.json -a cov2.json
合并多个覆盖率数据集,并以您选择的格式生成报告。您可以根据需要添加任意数量的输入 JSON 文件,如果您有很多文件,则使用 glob 模式(如 gcovr -a 'coverage-*.json'
)。
您还可以考虑使用带有 --add-tracefile
选项的 lcov
工具是否可行:您可以 运行 lcov 在每次测试后生成一个 lcov-tracefile(您可以使用 genhtml 生成 HTML 报告)。之后,您可以将跟踪文件合并到一个组合报告中。无法将 lcov 的跟踪文件与 gcovr 一起使用。
要添加到另一个答案,gcov
还可以在 gcov-tool
的帮助下合并来自多次运行的覆盖率数据:
$ gcov-tool merge dir1 dir2
(默认结果将存储在 merged_profile
文件夹中)。
遗憾的是 gcov-tool
一次只允许合并两个配置文件,但您可以使用 gcov-tool-many 解决此问题。
我有一个 C 程序,我用 -fprofile-arcs -ftest-coverage flags.Then 我 运行 这个程序有 5 个不同的输入,这将覆盖 .gcda 文件并给我组合 report.But 我想要单个测试的覆盖率报告并将它们存储在一个文件夹中,当我 运行 此文件夹上的任何覆盖率工具时,我得到每个测试的报告以及组合 report.Is 有办法做到这一点吗?
gcovr
和 lcov
都可以合并来自多个 运行 的覆盖率数据,但 gcov 没有内置功能。
Gcovr 5.0 添加了 -a/--add-tracefile
选项,可用于 merge multiple coverage runs。每次测试后,使用 gcovr 创建一个 JSON 报告。之后,您可以使用 gcovr -a cov1.json -a cov2.json
合并多个覆盖率数据集,并以您选择的格式生成报告。您可以根据需要添加任意数量的输入 JSON 文件,如果您有很多文件,则使用 glob 模式(如 gcovr -a 'coverage-*.json'
)。
您还可以考虑使用带有 --add-tracefile
选项的 lcov
工具是否可行:您可以 运行 lcov 在每次测试后生成一个 lcov-tracefile(您可以使用 genhtml 生成 HTML 报告)。之后,您可以将跟踪文件合并到一个组合报告中。无法将 lcov 的跟踪文件与 gcovr 一起使用。
要添加到另一个答案,gcov
还可以在 gcov-tool
的帮助下合并来自多次运行的覆盖率数据:
$ gcov-tool merge dir1 dir2
(默认结果将存储在 merged_profile
文件夹中)。
遗憾的是 gcov-tool
一次只允许合并两个配置文件,但您可以使用 gcov-tool-many 解决此问题。