编写Makefile(编译环境)
Makefile里面,加入编译项:
链接项:
考虑到后续代码覆盖可能需要调试,建议加入-O0
和-g
选项,但是不建议定义DEBUG,因为assert会导致程序abort。
可以在编译环境的Makefile模板中,加入如下代码:
其中rcovs是remote coverage start的缩写,rcove是remote coverage end的缩写,rcove是remote coverage clean的缩写。
初始化覆盖环境(编译环境)
RTSERVER和RTPASSWD变量,为运行时的服务器IP和SSH密码,需要在Makefile里面指定,然后执行make rcovs
即可自动编译并部署。
运行测试案例覆盖(运行环境)
在运行时,运行APP,如果需要,可以使用调试器,主动调用逻辑或者修改变量:
让程序正常退出,如果想脱离GDB,请使用detach命令,用q会kill进程,功亏一篑。
运行的时候,切记一点,让程序正常退出,通俗点讲,就是atexit里面的函数也要执行到,不能中途abort或者被KILL。
所以,编码的时候,可以通过捕获SIGTERM来主动退出。
收集结果(编译环境)
运行完成后,让运行时的程序正常结束,在编译环境上,执行make rcove,完成代码覆盖结果收集。
收集到的结果以report.tar.gz方式命令,并放到运行时上述打印目录,sz到本地解压开可以看到index.html。
结果分析
如下代码覆盖率:行覆盖82.5%,函数覆盖100%,分支覆盖55.3%
点开可以查看细节: