[发明专利]基于ASM框架的脚本处理方法、装置、设备及存储介质有效
申请号: | 202210557612.5 | 申请日: | 2022-05-19 |
公开(公告)号: | CN114996128B | 公开(公告)日: | 2023-03-14 |
发明(设计)人: | 陈永宏;张超;胡定贵;雷澍;尹华承 | 申请(专利权)人: | 青矩技术股份有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F8/41 |
代理公司: | 北京开阳星知识产权代理有限公司 11710 | 代理人: | 王艳斌 |
地址: | 100048 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 asm 框架 脚本 处理 方法 装置 设备 存储 介质 | ||
本公开涉及一种基于ASM框架的脚本处理方法、装置、设备及存储介质,其中,方法包括:对表达式脚本进行编译,生成列表,其中,所述表达式脚本由至少一条语句组成,所述列表包括至少一个表达式,每个表达式对应一条语句;基于预先插入的字节码调用拦截器类的beforeMethod方法,打印所述表达式脚本的执行状态信息;以及执行所述至少一个表达式,返回所述至少一个表达式的执行结果。根据本公开的技术方案,能够打印脚本的执行状态,为脚本执行过程提供了调试跟踪手段。
技术领域
本公开涉及计算机技术领域,尤其涉及一种基于ASM框架的脚本处理方法、装置、设备及存储介质。
背景技术
目前,对于在JVM上运行的表达式脚本系统,该表达式脚本系统通过编译和执行两个步骤,返回计算结果。
对于使用该表达式脚本系统的外部系统而言,脚本的编译和执行过程是黑盒子,目前没有相应的调试跟踪手段,因此无法得知脚本的执行状态。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种基于ASM框架的脚本处理方法、装置、设备及存储介质。
第一方面,本公开实施例提供了一种基于ASM框架的脚本处理方法,包括:
对表达式脚本进行编译,生成列表,其中,所述表达式脚本由至少一条语句组成,所述列表包括至少一个表达式,每个表达式对应一条语句;
基于预先插入的字节码调用拦截器类的beforeMethod方法,打印所述表达式脚本的执行状态信息;以及
执行所述至少一个表达式,返回所述至少一个表达式的执行结果;其中,采用以下步骤循环执行各表达式:初始化ClassWriter并创建ClassReader,以调用accept方法访问表达式子类;采用ClassWriter生成的字节码加载类,生成字节码增强后的表达式实例;调用表达式的执行方法。
可选地,所述打印所述表达式脚本的执行状态信息,包括:
获取预设的配置信息,打印与所述配置信息对应的所述表达式脚本的执行状态信息;或者,
在未检测到所述配置信息的情况下,采用默认配置打印所有所述表达式脚本的执行状态信息。
可选地,所述执行状态信息包括对象工厂中存储的对象和临时变量、行号以及所述表达式的内容。
可选地,所述方法还包括:通过ASM框架实现类加载器ClassLoader,以及生成ClassVisitor和MethodVisitor;
其中,ClassLoader用于根据类名和字节码加载类;ClassVisitor用于实现修改表达式子类的功能,ClassVisitor包括visit方法、visitField方法和visitMethod方法;MethodVisitor用于实现修改表达式子类的执行方法的功能,MethodVisitor包括visitCode方法。
可选地,在所述基于预先插入的字节码调用拦截器类的beforeMethod方法之前,还包括:
基于visitCode方法插入所述字节码,其中,所述字节码用于调用拦截器类的beforeMethod方法。
可选地,所述列表包括AST节点链表,其中,每个AST节点代表AST语法树的一个节点。
第二方面,本公开实施例提供了一种基于ASM框架的脚本处理装置,包括:
编译模块,用于对表达式脚本进行编译,生成列表,其中,所述表达式脚本由至少一条语句组成,所述列表包括至少一个表达式,每个表达式对应一条语句;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于青矩技术股份有限公司,未经青矩技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210557612.5/2.html,转载请声明来源钻瓜专利网。