码迷,mamicode.com
首页 > 其他好文 > 详细

基于lcov实现的增量代码UT覆盖率检查

时间:2016-08-03 18:13:25      阅读:510      评论:0      收藏:0      [点我收藏+]

标签:

背景介绍

配合CppUTest单元测试框架,lcov提供了一套比较完整的工程工具来对UT覆盖率进行度量。但对有些团队来说,历史负担太重,大量的遗留代码没有相应的UT。在这种情况下,对新增代码进行覆盖率检查,可能对团队来说是一种可行性较强的措施。在此目标基础上,并提出如下需求:

1)利用现有的lcov资源;

2)可以对指定git cmmit提交的代码进行UT覆盖率检查;

3)可以指定需要UT覆盖率检查的软件模块、文件;

4)可以设置UT覆盖率阈值;

5)检查结果可视化展示,有良好的用户体验;

为实现如上需求,开发了一个ut_incremental_check.py 工具。其在jenkins集成的效果截图如下:

技术分享

图一:每次构建后生成新增代码UT覆盖率报告:Unittest - incremental code coverage report

技术分享

图二:新增代码UT覆盖率报告详细信息

技术分享

图三:点击具体的uncovered line行号可以直接“电梯”直达到本行代码位置进行查看

 

工具介绍

ut_incremental_check.py有4个参数:

<since>..<until>:指定git commit SHA范围

<monitor_c_files>:指定需要关注的文件或目录列表,此参数要符合json数据格式

<lcov_dir>:lcov生成的目标文件目录

<threshold>:对新增代码UT覆盖率的下限要求。取值范围在(0,1]范围。

总体的工作流程见如下help说明。

$ ./ut_incremental_check.py

PURPOSE:
calculate UT coverage of git commits‘ new code

USAGE:
./ut_incremental_check.py <since>..<until> <monitor_c_files> <lcov_dir> <threshold>
example:
./ut_incremental_check.py "227b032..79196ba" ‘["source/soda/sp/lssp/i2c-v2/ksource"]‘ "coverage" 0.6

WORK PROCESS:
get changed file list between <since> and <until> , filter by <monitor_c_files> options;
get changed lines per changed file;
based on <lcov_dir>, search .gcov.html per file, and get uncover lines;
create report file:ut_incremental_check_report.html and check <threshold> (cover lines/new lines).

UT:
./ut_incremental_check.py ut

jenkins配置介绍

 jenkins job shell命令示例:

# 运行UT(CppUTest需要使能CPPUTEST_USE_GCOV配置,此处细节与本文无关,不展开讨论)
bash -ex bspmake ut


# 生成UT覆盖率信息
lcov --capture --directory tmp/unittest/i2c-v2/ksource -b source/soda/sp/lssp/i2c-v2/unittest/ --output-file coverage.info


# 生成UT覆盖率html报告
genhtml coverage.info -p $WORKSPACE --output-directory coverage


# 生成增量代码UT覆盖率html报告
./ut_incremental_check.py $GIT_PREVIOUS_SUCCESSFUL_COMMIT".."$GIT_COMMIT ["source/soda/sp/lssp/i2c-v2/ksource"] "coverage" 0.8


# 返回结果
exit $?

 

jenkins HTML报告配置示例:  

 技术分享

 --EOF--

 

基于lcov实现的增量代码UT覆盖率检查

标签:

原文地址:http://www.cnblogs.com/wahaha02/p/5733755.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!