Dim*_*nko 8 c++ unit-testing code-coverage gcov
目前我们将gcov与我们的Linux C++应用程序测试套件一起使用,它在测量线路覆盖率方面做得很好.
除了线路覆盖之外,gcov能否生成功能/方法覆盖报告?
看看参数gcov接受我不认为这是可能的,但我可能会遗漏一些东西.或者,可能是否有其他工具可以从gcc生成的统计数据中生成函数/方法覆盖率报告?
更新:按功能/方法覆盖率,我指的是在测试期间执行的函数的百分比.
我猜你的意思是-f选项,它会给你每个函数覆盖的行数百分比.在Dobb博士有一篇关于gcov的有趣文章可能会有所帮助.如果"man gcov"没有显示-f标志,请检查您是否拥有可重新使用的最新版本的gcc套件.
编辑:要获得未执行的函数的百分比,您可以简单地解析函数覆盖输出,因为0.00%的覆盖率应该非常等于未调用.这个小脚本打印未执行的函数的百分比:
#!/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
Run Code Online (Sandbox Code Playgroud)
lcov实用程序很好,我们使用它.但我不确定你是否需要它以满足你的需求.
我们
使用ctags(wikipedia ; sourceforge)查找相关头文件中声明的所有函数.
运行GCOV以获取二进制文件中每个函数的行覆盖率.
比较1和2中的函数列表以生成"函数调用"/"可用函数".
我们将其称为"API覆盖",因为我们仅将步骤#1应用于公共API标头.但是您可以在所有标题上执行此操作,也可以仅在您选择的子集中执 我认为我们以这种方式生产的比例是您正在寻找的比率.