基于ASM框架的脚本处理方法、装置、设备及存储介质制造方法及图纸

技术编号:34802347 阅读:51 留言:0更新日期:2022-09-03 20:09
本公开涉及一种基于ASM框架的脚本处理方法、装置、设备及存储介质,其中,方法包括:对表达式脚本进行编译,生成列表,其中,所述表达式脚本由至少一条语句组成,所述列表包括至少一个表达式,每个表达式对应一条语句;基于预先插入的字节码调用拦截器类的beforeMethod方法,打印所述表达式脚本的执行状态信息;以及执行所述至少一个表达式,返回所述至少一个表达式的执行结果。根据本公开的技术方案,能够打印脚本的执行状态,为脚本执行过程提供了调试跟踪手段。试跟踪手段。试跟踪手段。

【技术实现步骤摘要】
基于ASM框架的脚本处理方法、装置、设备及存储介质


[0001]本公开涉及计算机
,尤其涉及一种基于ASM框架的脚本处理方法、装置、设备及存储介质。

技术介绍

[0002]目前,对于在JVM上运行的表达式脚本系统,该表达式脚本系统通过编译和执行两个步骤,返回计算结果。
[0003]对于使用该表达式脚本系统的外部系统而言,脚本的编译和执行过程是黑盒子,目前没有相应的调试跟踪手段,因此无法得知脚本的执行状态。

技术实现思路

[0004]为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种基于ASM框架的脚本处理方法、装置、设备及存储介质。
[0005]第一方面,本公开实施例提供了一种基于ASM框架的脚本处理方法,包括:
[0006]对表达式脚本进行编译,生成列表,其中,所述表达式脚本由至少一条语句组成,所述列表包括至少一个表达式,每个表达式对应一条语句;
[0007]基于预先插入的字节码调用拦截器类的beforeMethod方法,打印所述表达式脚本的执行状态信息;以及
[0008]执行所述至少一个表达式,返回所述至少一个表达式的执行结果;其中,采用以下步骤循环执行各表达式:初始化ClassWriter并创建ClassReader,以调用accept方法访问表达式子类;采用ClassWriter生成的字节码加载类,生成字节码增强后的表达式实例;调用表达式的执行方法。
[0009]可选地,所述打印所述表达式脚本的执行状态信息,包括:
>[0010]获取预设的配置信息,打印与所述配置信息对应的所述表达式脚本的执行状态信息;或者,
[0011]在未检测到所述配置信息的情况下,采用默认配置打印所有所述表达式脚本的执行状态信息。
[0012]可选地,所述执行状态信息包括对象工厂中存储的对象和临时变量、行号以及所述表达式的内容。
[0013]可选地,所述方法还包括:通过ASM框架实现类加载器ClassLoader,以及生成ClassVisitor和MethodVisitor;
[0014]其中,ClassLoader用于根据类名和字节码加载类;ClassVisitor用于实现修改表达式子类的功能,ClassVisitor包括visit方法、visitField方法和visitMethod方法;MethodVisitor用于实现修改表达式子类的执行方法的功能,MethodVisitor包括visitCode方法。
[0015]可选地,在所述基于预先插入的字节码调用拦截器类的beforeMethod方法之前,
还包括:
[0016]基于visitCode方法插入所述字节码,其中,所述字节码用于调用拦截器类的beforeMethod方法。
[0017]可选地,所述列表包括AST节点链表,其中,每个AST节点代表AST语法树的一个节点。
[0018]第二方面,本公开实施例提供了一种基于ASM框架的脚本处理装置,包括:
[0019]编译模块,用于对表达式脚本进行编译,生成列表,其中,所述表达式脚本由至少一条语句组成,所述列表包括至少一个表达式,每个表达式对应一条语句;
[0020]打印模块,用于基于预先插入的字节码调用拦截器类的beforeMethod方法,打印所述表达式脚本的执行状态信息;以及
[0021]执行模块,用于执行所述至少一个表达式,返回所述至少一个表达式的执行结果;其中,采用以下步骤循环执行各表达式:初始化ClassWriter并创建ClassReader,以调用accept方法访问表达式子类;采用ClassWriter生成的字节码加载类,生成字节码增强后的表达式实例;调用所述表达式的执行方法。
[0022]第三方面,本公开实施例提供了一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述第一方面所述的基于ASM框架的脚本处理方法。
[0023]第四方面,本公开实施例提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的基于ASM框架的脚本处理方法。
[0024]本公开实施例提供的技术方案与现有技术相比具有如下优点:对表达式脚本进行编译,生成包括至少一个表达式的列表,基于预先插入的字节码调用拦截器类的beforeMethod方法,打印表达式脚本的执行状态信息,以及执行至少一个表达式,返回至少一个表达式的执行结果,由此,能够打印脚本的执行状态,为脚本执行过程提供了调试跟踪手段。
附图说明
[0025]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
[0026]为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0027]图1为本公开实施例所提供的一种基于ASM框架的脚本处理方法的流程示意图;
[0028]图2为本公开实施例所提供的一种基于ASM框架的脚本处理装置的结构示意图;
[0029]图3为本公开实施例提供的一种电子设备的结构示意图。
具体实施方式
[0030]为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可
以相互组合。
[0031]在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
[0032]图1为本公开实施例所提供的一种基于ASM框架的脚本处理方法的流程示意图,本公开实施例提供的方法可以由基于ASM框架的脚本处理装置来执行,该装置可以采用软件和/或硬件实现,并可集成在任意具有计算能力的电子设备上,例如智能手机、平板电脑等用户终端。
[0033]如图1所示,本公开实施例提供的基于ASM框架的脚本处理方法可包括:
[0034]步骤101,对表达式脚本进行编译,生成列表,其中,表达式脚本由至少一条语句组成,列表包括至少一个表达式,每个表达式对应一条语句。
[0035]本公开实施例的方法,可以应用于在JVM(Java Virtual Machine,Java虚拟机)上运行的表达式脚本系统,该表达式脚本系统通过编译和执行两个步骤,返回计算结果。具体地,在实际应用过程中,对于使用该表达式脚本系统的外部系统而言,脚本的编译和执行过程是黑盒子,尤其是脚本的执行过程,目前没有相应的调试跟踪手段,因此,本实施例提供了一种采用ASM(一种Java字节码操控框架)无侵入地本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于ASM框架的脚本处理方法,其特征在于,包括:对表达式脚本进行编译,生成列表,其中,所述表达式脚本由至少一条语句组成,所述列表包括至少一个表达式,每个表达式对应一条语句;基于预先插入的字节码调用拦截器类的beforeMethod方法,打印所述表达式脚本的执行状态信息;以及执行所述至少一个表达式,返回所述至少一个表达式的执行结果;其中,采用以下步骤循环执行各表达式:初始化ClassWriter并创建ClassReader,以调用accept方法访问表达式子类;采用ClassWriter生成的字节码加载类,生成字节码增强后的表达式实例;调用表达式的执行方法。2.如权利要求1所述的方法,其特征在于,所述打印所述表达式脚本的执行状态信息,包括:获取预设的配置信息,打印与所述配置信息对应的所述表达式脚本的执行状态信息;或者,在未检测到所述配置信息的情况下,采用默认配置打印所有所述表达式脚本的执行状态信息。3.如权利要求1或2所述的方法,其特征在于,所述执行状态信息包括对象工厂中存储的对象和临时变量、行号以及所述表达式的内容。4.如权利要求3所述的方法,其特征在于,还包括:通过ASM框架实现类加载器ClassLoader,以及生成ClassVisitor和MethodVisitor;其中,ClassLoader用于根据类名和字节码加载类;ClassVisitor用于实现修改表达式子类的功能,ClassVisitor包括visit方法、visitField方法和visitMethod方法;MethodVisitor用于实现修改表达式子类的执行方法的功能,MethodVisitor包括visitCode方...

【专利技术属性】
技术研发人员:陈永宏张超胡定贵雷澍尹华承
申请(专利权)人:青矩技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1