分析代码
打开idea -> run -> show coverage data选择对应的exec文件即可获取服务端的代码覆盖情况。
绿色覆盖(活跃代码)
红色未覆盖(僵尸代码)
Reference
- JaCoCo - Documentatio
- javaagent使用指南 - rickiyang - 博客园 (cnblogs.com
- 使用Jacoco统计服务端代码覆盖情况实践 - M104 - 博客园 (cnblogs.com
- Diving Into Bytecode Manipulation: Creating an Audit Log With ASM and Javassist | New Reli
五. 效能提升
5.1 需求交付效率提升
5.1.1 缩短需求交付周期
因为僵尸代码删除,减少开发需求的范围,降低老代码认知成本,降低测试回归成本。
需求交付周期整体呈缩短趋势!2023/1月落地实践,之前需求交付周期约15天,之后约12天。
5.1.2 降低开发阶段停留时长
僵尸代码大量存在,研发认知需求改动点负荷很高,需要耗费大量时间成本。
2023/1月落地后,开发阶段时长缩短到 4天 以下(由 4.54 缩短至 3.11,缩短约31%),呈明显缩短趋势!
5.2 人效提升
5.2.1 降低研发认知负荷
删除无用僵尸代码,圈复杂度会大幅度降低,重复代码块也会降低,则研发认知负荷也会随之降低!
平均系统重复代码块数从 31 下降至 27 左右,降低了系统维护成本!
5.2.2 提升人均需求吞吐量
因为减少人力认知成本,缩小需求范围,所以会直接提升需求的吞吐量!
自从2023/1月落地实践后,人均需求的吞吐量也大幅度提升,从之前 1.5 提升到 2.5 左右。
5.3 过程质量提升
5.3.1 减少自动化bug数
由于存量僵尸代码减少,则整体回滚用例和场景变得精简,黄金流程也不会被僵尸代码干扰,则自动化bug数也有明显下降趋势!
随着2023年1月以来的不断实践,自动化发现的bug数也逐月递减,从11个/月 -> 9个/月 -> 6个/月 -> 5个/月。
5.3.2 提升单测覆盖率
自从2023年1月落地实践后,随着删除掉大量僵尸代码,整体代码总量在减少,无效代码被无情下线,同时提升了单测代码覆盖率,呈上升趋势!单测行覆盖率从 51.33% -> 52.28%,提升系统质量!
六. 简要总结
- 随着需求不断迭代交付,业务代码必然不断累积,运维成本不断升高,如果线上无用功能的代码一直残留,对研发来说是巨大的累赘!对于此类代码约定俗成为 “僵尸代码”。
- 赶快利用jacoco探针深入分析系统的一行行代码,看到线上功能运行最真实的一面,参照代码的覆盖情况,针对性下线和删除僵尸代码,让系统瘦身,让研发减负!
作者:京东物流 周奕儒
来源:京东云开发者社区 自猿其说Tech