目前,我们在Linux C++应用程序的测试套件中使用gcov,它能很好地测量代码行覆盖率。
除了行覆盖率报告外,gcov是否能生成函数/方法覆盖率报告?
通过查看gcov接受的参数,我不认为这是可能的,但我可能遗漏了什么。或者,可能有其他工具可以从gcc生成的统计数据中产生函数/方法覆盖率报告吗?
更新:我的意思是函数/方法覆盖率,即在测试期间执行的函数百分比。
目前,我们在Linux C++应用程序的测试套件中使用gcov,它能很好地测量代码行覆盖率。
除了行覆盖率报告外,gcov是否能生成函数/方法覆盖率报告?
通过查看gcov接受的参数,我不认为这是可能的,但我可能遗漏了什么。或者,可能有其他工具可以从gcc生成的统计数据中产生函数/方法覆盖率报告吗?
更新:我的意思是函数/方法覆盖率,即在测试期间执行的函数百分比。
#!/bin/bash
if test -z "$1"
then
echo "First argument must be function coverage file"
else
notExecuted=`cat $1 | grep "^0.00%" | wc -l`
executed=`cat $1 | grep -v "^0.00%" | wc -l`
percentage=$(echo "scale=2; $notExecuted / ($notExecuted + $executed) * 100" |bc)
echo $percentage
fi
lcov工具很好用,我们也在使用它。但我不确定你是否需要它来满足你的需求。
我们:
使用ctags (维基百科; sourceforge) 查找相关头文件中声明的所有函数。
运行GCOV,以获取二进制文件中每个函数的代码覆盖率。
比较步骤1和步骤2中的函数列表,生成“可调用函数” / “可用函数”。
我们称之为“API覆盖率”,因为我们只对公共API头文件应用步骤#1。但您可以选择在所有头文件或仅在子集上执行此操作。我认为我们以这种方式生成的比率就是您要寻找的比率。