本文记录一次添加代码覆盖度统计的经历。
工程的开发环境是Windows,采用VS编译器。在网上搜索没有找到合适的工具(免费的工具)。因此使用GCC的GCOV功能完成统计,感谢GCC和MinGW。
第一步:使用MingW编译工程,可直接编写Makefile,也可采用eclipse的CDT或者CMake工具。其关键是加入编译参数-fprofile-arcs -ftest-coverage。
第二步,运行程序得到统计数据,
第三步:可视化统计数据,GCC自带的GCOV可视化效果差,网络推荐lcov。该工具使用Perl编写,并且与Linux系统耦合,无法在Windows上直接使用,但可以使用MinGW下的msys环境中运行。运行完lcov和genhtml后可以的到网页形式的统计数据,效果不错。
题外:由于MinGW安装在Program File的下面,路径有空格,运行msys.bat时遇到小问题。需要修改msys.bat两处代码:
line 46:
if NOT EXIST %WD%msys-1.0.dll set WD=%~dp0\bin\
改为
if NOT EXIST %WD%msys-1.0.dll set WD="%~dp0\bin\"
line 103:
start %WD%sh --login -i
改为
start "msys sh" %WD%sh --login -i
后者的问题是start指令把第一个带有”的参数当做标题,因此需要显式加入标题。
其实也可以直接运行bin\sh.exe --login -i。