1 情景导入
2021.09.26华为实习任务复现,要求实现基于SR的全量/增量覆盖率统计。
源代码:https://gitee.com/dragon-liu/RB_01
2 部门现状
-
当前的代码覆盖率只能基于整个代码库进行统计,无法便捷跟踪每个需求引起的覆盖率变化,版本管理成本很高。
方案:基于SR的全量/增量覆盖率统计
-
其次,脚本使用Perl语言编写,晦涩难懂,没有维护人员。
编程语言:Shell + Python
3 解决方案
- 通过git跟踪不同需求引入的代码变更
- 基于变更代码生成差异文件:强行cherry-pick
- 无冲突,直接做全量/增量分析,结果是准确的
- 有冲突需,自己获取差异代码行,结果是近似的
- 根据SR获取commit id列表
- 以最后一笔提交为标准
- 倒序遍历commit id,找出每次提交的代码行(倒序的原因:一般的,越新的commit对当前代码库影响越大)
- 利用lcov以及addlcov生成对应需求的全量/增量覆盖率报告
- 通过genhtml工具和python工程库生成html报告
- 借助Jenkins定时运行脚本与发送邮件
4 Jenkins使用
4.1 Ubuntu20安装Jenkins
4.2 配置构建任务
4.3 邮件发送
- jenkins构建后邮件发送
- jenkins构建邮件自动发送,测试邮件发送成功,构建项目邮件发送不成功的问题
- jenkins构建任务后发送邮件
- jenkins发送邮件失败“No emails were triggered”
本地复现使用的Jenkins自带的邮件提醒功能;华为实习过程中,自己编写脚本进行邮件提醒。
具体实现详见 博客:Jenkins配置定时发送邮件功能
关于报错
1 | ###强制回滚到某版本 |
1 | ###解决:https://stackoverflow.com/questions/3411048/unexpected-operator-in-shell-programming/3411061 |