在项目管理中不只是讲究说能否解决问题,还讲究方便有效的过程合理利用好资源来提高团队的工作效率。
项目中,代码提交了,单元测试也写了,但是之后,对于代码的质量要求不能放松,单元测试是否已经有效覆盖代码的部分,不能留下一些死角最后成为影响产品质量的因素,于是,使用了代码覆盖率工具帮助项目开发,进一步来说,代码覆盖率工具的使用是不是能够在团队里面方便使用然后及时反馈问题呢,就需要一个足够贴心的老大了,呵呵。
环境:Linux C++ boost
我比较喜欢lgcov呈现出来的覆盖率主页,清晰易懂,所以围绕lgcov把组内的代码利用Makefile进行重编,本来我们组是利用bjam来编译项目的,配置起来比makefile可就简便多了,但是貌似bjam这东西不知道怎么和lgcov结合起来,后来在网上也没找到什么提示,看到这篇文章的大侠如果有bjam和lgcov结合的经验请留个言呵呵,所以直接就利用Makefile来写了,我对于Makefile也是个初学者,用了几天,某些很零碎的时间学习基础知识,在网上搜资料看基本应用,还有如何在makefile中利用gcc和lgcov结合来产生我要的结果,下面是我使用的Makefile模板:
CC = gcc
XX = g++
OBJ_DIR = ***
SYSTEM_LIB = /***.O
PROJECT_LIB = /***.O
BOOST_LIB = /***.O
GWDLL_LIB = ***.O
OTHER_LIB = ***.O
SYSTEM_INC = ***/include
PROJECT_INC = ***/include
GWDLL_INC = ***/include
LIB_SHARE = ***/*.ld
LDFLAGS = -mabi=64\
-lrt\
-lpthread\
-lcvmx\
-Xlinker -T -Xlinker
CFLAGS = -Wall\
-fprofile-arcs\
-ftest-coverage\
-O\
–g\
TARGET = ./helloworld
%.o: %.c
$(CC) -I$(A_INC) -I$(B_INC) $(CFLAGS) -c $< -o $@
%.o:%.cpp
$(XX) -I$(A_INC) -I$(B_INC) $(CFLAGS) -c $< -o $@
SOURCES = $(wildcard *.c *.cpp)
OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCES) ) )
$(TARGET) : $(OBJS)
$(XX) $(OBJS) -o $(TARGET)
chmod a+x $(TARGET)
先生成库文件,最后再链接成一个可执行文件:
g++ -g -O2 -lgcov --coverage -o main ***.o
执行可执行文件./main,会产生很多gcda文件
利用lgcov工具,如果没有装要先安装
lgcov --directory ./ --capture --output-file app.info
genhtml app.info
此刻看到有index.html主页出现了,women使用apache架构出去给队员们访问
安装apache然后配置其httpd.conf文件,主要是在与DocumentRoot要换成上面生成index.html的目录,然后Directory那里要改成Allow from all
最后还必须注意,linux系统的防火墙要关掉,不然网页访问不到主页。
如此,完毕。