我喜欢在Linux机器上使用gcovr来了解已测试的内容和未测试的内容。我掉进了一个坑,那里看不到解决方案。
我有如下所示的C代码(另存为main.c)。该代码非常简单-实际上,重点仅在于#if构造以及如何针对不同的编译设置进行覆盖率分析。
/* Save as main.c */
void fct(int a)
{
// Define PRINTSTYLE to 0 or 1 when compiling
#if PRINTSTYLE==0
if (a<0) {
printf("%i is negative\n", a);
} else {
printf("%i is ... sorta not negative\n", a);
}
#else
if (a<0) {
printf("%i<0\n", a);
} else {
printf("%i>=0\n", a);
}
#endif
}
int main(void)
{
fct(1);
fct(-1);
return 0;
}
我可以使用例如在Linux上进行编译和覆盖测试
这是可行的-但需要gcovr 4.2(或更高版本),如https://gcovr.com/en/stable/guide.html#combining-tracefiles中所示
首先安装或升级gcovr,例如
pip install -U gcovr
然后确保〜/ .local / bin /在$ PATH中。
接下来,对每个配置运行一次gcovr,并生成JSON报告:
gcc -o testprogram main.c -g --coverage -DPRINTSTYLE=0
./testprogram
gcovr -r . --json run-1.json
gcc -o testprogram main.c -g --coverage -DPRINTSTYLE=1
./testprogram
gcovr -r . --json run-2.json
最后,使用-a /-add-tracefile模式合并JSON报告并生成所需的报告:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。