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