加入收藏 | 设为首页 | 会员中心 | 我要投稿 文章分享网_茂名站长网 (https://www.0668zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

基于IDEA插件开发和字节码插桩技术

发布时间:2021-04-12 16:52:12 所属栏目:外闻 来源:互联网
导读:务提需求,产品定方案,研发做实现,测试验流程。四种角色的相互配合是确保一个需求上线的必备条件。在整个需求的交付质量级别划分中,研发与测试是非常重的一环,如果研发提测的代码质量不高,就会出现不同级别的修BUG、返工甚至重做的风险。 那么,怎么来

务提需求,产品定方案,研发做实现,测试验流程。四种角色的相互配合是确保一个需求上线的必备条件。在整个需求的交付质量级别划分中,研发与测试是非常重的一环,如果研发提测的代码质量不高,就会出现不同级别的修BUG、返工甚至重做的风险。

那么,怎么来提高代码质量呢?一般我们都会要求研发在开发代码的过程中编写单元测试,验证自己的代码逻辑。如果最终单元测试覆盖度不足,可以由测试拒绝研发提测。

但是,整个需求实现的代码是在全部开发完成后提测的,也就是临近上线的最后一环,大家才知道某个研发的某个功能域的实现是否具备提测条件。如果这个时候代码质量不高,那么接下来就是项目风险的时候。压测试时间、调上线时间,总之有病拖着最后成大病了!

当然,你可以在项目开发期间定期排查代码,或者在日会进度反馈等等手段。可这样需要耗费大量时间1拖1的开发排查方式很难满足复杂流程的较大型项目开发,而且对于项目风险把控也是不可预估的。以,我们希望采集研发在开发过程中的执行动作,把风险判断提前。实际操作举例就是,当你开发完成一个接口,开始测试运行时,我们的插件就可以采集到这个接口的全部信息,包括:接口名称、入参类型和内容、出参类型和内容、异常信息、调用关系链等。而再把这些信息汇总提交到服务端,生成本次需求代码分支下的全部接口动作,以及各系统间的关系链路,并附带随时生成最新的接口文档和一键测试验证功能。后期测试人员介入时就可以参考研发在编码过程中的全部测试用例,也可以查看整个功能的覆盖程度,此外测试人员测试过程中的数据也会被保留下。现在拥有这些数据信息以后,就可以完整的生成一套研发测试质量交付全览图,让整个工程开发交付质量评估透明化。

接下来我们就按照以上的描述性内容,实践开发一个案例体会下。走起!

二、技术实现准备

  1. 字节码插桩,因为我们需要采集到接口执行信息,那么就需要使用字节码插桩组件给接口方法增强。这个实现有点类似谷歌的Dapper,大规模分布式架构的非入侵监控。只不过我们需要采集的描述性信息更多。关于字节码插桩,可以了解ASM、Javassist、Byte-Buddy,它们都可以做此项工作。
  2. IDEA 插件开发,因为我们需要在研发人员开发过程中进行采集,也不破坏研发的操作习惯。那么最好的方式就是嵌入到启动运行中,只要在开发过程中有运行代码的动作,就采集相应的接口信息。
  3. 最后就是数据的传输和处理,传输可以使用MQ或者直接用Netty。而处理数据的过程会相对比较复杂,在这个过程需要分析出有价值的数据,同类的数据,合并一条执行链路的数据,以及生成相关的接口文档和工程服务地图。

三、对字节码插桩

这里我们使用的字节码插桩组件是 Byte-buddy,它是一个代码生成和操作库,用于在Java 应用程序运行时创建和修改 Java 类,而无需编译器的帮助。除了 Java 类库附带的代码生成实用程序外,Byte Buddy 还允许创建任意类,并且不限于实现用于创建运行时代理的接口。此外,Byte Buddy 提供了一种方便的 API,可以使用 Java 代理或在构建过程中手动更改类。

(编辑:文章分享网_茂名站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读