【发布时间】:2016-02-25 22:11:26
【问题描述】:
我已在我的项目中成功设置 gcov,以使用 lcov 生成带有代码覆盖率数据的 HTML 文件。但是,由于我经常仅通过 SSH 和文本控制台工作,因此我正在寻找一种方法来生成带注释的源文件,例如 git-blame 对历史的处理:
covered source_line();
not covered other_source_line();
有可能吗?
【问题讨论】:
我已在我的项目中成功设置 gcov,以使用 lcov 生成带有代码覆盖率数据的 HTML 文件。但是,由于我经常仅通过 SSH 和文本控制台工作,因此我正在寻找一种方法来生成带注释的源文件,例如 git-blame 对历史的处理:
covered source_line();
not covered other_source_line();
有可能吗?
【问题讨论】:
当您说gcov 时,我假设您指的是gcovr,因为gcov 不会输出为HTML 格式。 gcovr 确实输出到 HTML。 gcovr 基本上只是 gcov 的包装。
要获取带注释的源文件,您只需使用gcov即可。
gcov,默认情况下,注释源文件。
要使用 gcov 运行,您只需要使用 -fprofile-arcs -ftest-coverage -fPIC -O0 编译,并链接到 gcov 库(-lgcov)。
然后运行你的程序。
然后发出以下命令:
gcov main.c
main.c 是您想要在其中进行注释分析的任何文件。
之后,您会注意到创建了一个新文件(main.c.gcov)。这是您要查找的文件。
Here'sgcov 用法的链接
【讨论】:
.gcov 文件有点神秘,有很多像123. /* EOF */ 这样的行我看了一下,我猜这就是lcov 解析的内容,也许我可以从中创建所需的输出。
gcov -a main.c 它只生成我需要的输出。