关于代码覆盖

来源:互联网 发布:怎样卸载苹果软件 编辑:程序博客网 时间:2024/05/22 13:52

一.为什么要跑覆盖率:

    如果你在写c/c++代码,如果你没对你的代码写过测试用例,如果你没有对你的代码使用覆盖率分析,那么建议你从现在开始对你的代码做覆盖。

    好处当然是很多的。简单说,(1)当你对你对你的代码写过单元测试用例,从你的覆盖率上可以分析出你的的用例完备性,用例完备,你的功能才完备。(2)当你对你的代码写过接口测试或者系统测试,从你的覆盖率上可以分析到哪些代码是无用代码,删除无用代码可以提高代码质量。

二.工具:

    自然是gcov。(1)自己写的makefile,请加上编译选项 -fprofile-arcs -ftest-coverage。(2)用的cmake,那请在cmake上-DCMAKE_BUILD_TYPE=Debug -DENABLE_GCOV=1。

    编译完成后,编译路径下会有gcno文件。在同一台机器上运行程序,程序正常退出后,编译路径下会有gcda文件。直接使用gcov 即可看到覆盖率。产生网页文件lcov --directory . --capture --output-file xxx.info ,genhtml -o results xxx.info。

三.其他注意:

    代码中如果有字节对齐的东西,如果没有恢复字节对齐内容,gcov编译出来的程序可能会使原来正常的程序运行出core_dump。

    代码没有正常退出或者文件权限不对,有可能导致gcda文件无法生成。

原创粉丝点击