JaCoCo 助您毁灭线上僵尸代码( 二 )


ls -lh /export/Data | awk 'NR >1 {print}' | awk '{if ($9 != "jdos.jd.com" && $9 != "coverage") print $9}' | xargs -i /bin/rm -rf /export/Data/{} > /dev/null 2>&1

JaCoCo 助您毁灭线上僵尸代码

文章插图
4.5 下载 cover 文件
/export/Data/coverage/code-cover.exec
JaCoCo 助您毁灭线上僵尸代码

文章插图
登录堡垒机终端
cd /export/Data/coverage
jdos 下载文件
curl -s up.bastion.jd.com/file/up | bash
4.6 分析代码
打开 idea -> run -> show coverage data 选择对应的 exec 文件即可获取服务端的代码覆盖情况 。
绿色覆盖(活跃代码)
JaCoCo 助您毁灭线上僵尸代码

文章插图
红色未覆盖(僵尸代码)
JaCoCo 助您毁灭线上僵尸代码

文章插图
Reference
  1. JaCoCo - Documentatio
  2. javaagent 使用指南 - rickiyang - 博客园 (cnblogs.com
  3. 使用 Jacoco 统计服务端代码覆盖情况实践 - M104 - 博客园 (cnblogs.com
  4. Diving Into Bytecode Manipulation: Creating an Audit Log With ASM and Javassist | New Reli
五 。效能提升5.1 需求交付效率提升
5.1.1 缩短需求交付周期
因为僵尸代码删除,减少开发需求的范围,降低老代码认知成本,降低测试回归成本 。
需求交付周期整体呈缩短趋势!2023/1 月落地实践,之前需求交付周期约 15 天,之后约 12 天 。
JaCoCo 助您毁灭线上僵尸代码

文章插图
5.1.2 降低开发阶段停留时长
僵尸代码大量存在,研发认知需求改动点负荷很高,需要耗费大量时间成本 。
2023/1 月落地后,开发阶段时长缩短到 4 天 以下(由 4.54 缩短至 3.11,缩短约 31%),呈明显缩短趋势!
JaCoCo 助您毁灭线上僵尸代码

文章插图
5.2 人效提升
5.2.1 降低研发认知负荷
删除无用僵尸代码,圈复杂度会大幅度降低,重复代码块也会降低,则研发认知负荷也会随之降低!
平均系统重复代码块数从 31 下降至 27 左右,降低了系统维护成本!
JaCoCo 助您毁灭线上僵尸代码

文章插图
5.2.2 提升人均需求吞吐量
因为减少人力认知成本,缩小需求范围,所以会直接提升需求的吞吐量!
自从 2023/1 月落地实践后,人均需求的吞吐量也大幅度提升,从之前 1.5 提升到 2.5 左右 。
JaCoCo 助您毁灭线上僵尸代码

文章插图
5.3 过程质量提升
5.3.1 减少自动化 bug 数
由于存量僵尸代码减少,则整体回滚用例和场景变得精简,黄金流程也不会被僵尸代码干扰,则自动化 bug 数也有明显下降趋势!
随着 2023 年 1 月以来的不断实践,自动化发现的 bug 数也逐月递减,从 11 个 / 月 -> 9 个 / 月 -> 6 个 / 月 -> 5 个 / 月 。
JaCoCo 助您毁灭线上僵尸代码

文章插图
5.3.2 提升单测覆盖率
自从 2023 年 1 月落地实践后,随着删除掉大量僵尸代码,整体代码总量在减少,无效代码被无情下线,同时提升了单测代码覆盖率,呈上升趋势!单测行覆盖率从 51.33% -> 52.28%,提升系统质量!
JaCoCo 助您毁灭线上僵尸代码

文章插图

JaCoCo 助您毁灭线上僵尸代码

文章插图
 
六 。简要总结
  • 随着需求不断迭代交付,业务代码必然不断累积,运维成本不断升高,如果线上无用功能的代码一直残留,对研发来说是巨大的累赘!对于此类代码约定俗成为 “僵尸代码” 。
  • 赶快利用 jacoco 探针深入分析系统的一行行代码,看到线上功能运行最真实的一面,参照代码的覆盖情况,针对性下线和删除僵尸代码,让系统瘦身,让研发减负!
作者:京东物流 周奕儒
来源:京东云开发者社区 自猿其说 Tech




推荐阅读