安全之安全(security²)博客目录导读
覆盖率分析汇总
目录
一、GCOV简介
二、GCOV使用示例
三、GCOV编译命令
四、运行并生成覆盖率报告
五、覆盖率报告分析
一、GCOV简介
因为动态代码分析可能只覆盖部分代码,所以我们需要一个代码覆盖工具,以了解哪些代码被覆盖。目前有一些商业代码覆盖工具,如Bullseye。一些编译器还增加了代码覆盖功能,例如GCOV。
GCOV是一个测试代码覆盖率的工具。与GCC一起使用来分析程序,以帮助创建更高效、更快的运行代码,并发现程序的未测试部分。它是一个命令行方式的控制台程序。需要结合lcov,gcovr等前端图形工具才能实现统计数据图形化。GCOV伴随GCC发布,不需要单独下载GCOV工具。配合GCC共同实现对c/c++文件的语句覆盖和分支覆盖测试。
二、GCOV使用示例
三、GCOV编译命令
gcc -fprofile-arcs -ftest-coverage -o vulnerable vulnerable.c
-ftest-coverage:在编译的时候产生.gcno文件,它包含了重建基本块图和相应的块的源码的行号的信息。
-fprofile-arcs:在运行编译过的程序的时候,会产生.gcda文件,它包含了弧跳变的次数等信息。
四、运行并生成覆盖率报告
./vulnerable
# 生成覆盖率文本报告
lcov -c -d . -o test.info --rc lcov_branch_coverage=1
# 生成覆盖率网页报告
genhtml --branch-coverage -o result test.info
五、覆盖率报告分析
打开result文件夹下的index.html文件,即可得到网页版的覆盖率分析报告