编码方法、返回信息配置方法、装置和计算机设备制造方法及图纸

技术编号:39284972 阅读:6 留言:0更新日期:2023-11-07 10:56
本申请涉及一种编译方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:响应于编译请求,获取编译请求指向的应用软件的类文件集合;针对类文件集合中的每个类文件,根据所针对的类文件中的函数的函数相关信息,从针对的类文件中筛选出待插桩的任务函数;在针对的类文件中的任务函数中查找用以实现任务函数的代码逻辑的实现函数,并在查找到的实现函数中插入预设插桩代码;将针对的类文件中的实现函数的函数相关信息进行反馈;其中,反馈的实现函数的函数相关信息,用于确定与插入的相应预设插桩代码对应的返回信息;确定的所述返回信息,用于确定运行应用软件时的运行信息。采用本方法能够提升运行信息的获取效率。效率。效率。

【技术实现步骤摘要】
编码方法、返回信息配置方法、装置和计算机设备


[0001]本申请涉及计算机
,特别是涉及一种编码方法、返回信息配置方法、装置和计算机设备。

技术介绍

[0002]随着科学技术的发展,出现了越来越多的应用软件。比如,出现了即时通信应用或者资源交换应用等等。在运行应用软件的过程中,可采集应用软件的运行信息,从而基于采集得到的运行信息确定应用软件中是否存在缺陷,从而基于定位到的缺陷对应用软件进行修改或更新等。
[0003]目前,主要是通过人工修改应用软件的代码的方式来得到应用软件运行时的运行信息,但是通过人工来修改应用软件的代码方式会降低了运行信息的获取效率。

技术实现思路

[0004]基于此,有必要针对上述技术问题,提供一种能够提升运行信息获取效率的编码方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
[0005]第一方面,本申请提供了一种编译方法,所述方法包括:
[0006]响应于编译请求,获取所述编译请求指向的应用软件的类文件集合;
[0007]针对所述类文件集合中的每个类文件,根据所针对的类文件中的函数的函数相关信息,从所述针对的类文件中筛选出待插桩的任务函数;
[0008]在所述针对的类文件中的任务函数中查找用以实现任务函数的代码逻辑的实现函数,并在查找到的所述实现函数中插入预设插桩代码;
[0009]将所述针对的类文件中的所述实现函数的函数相关信息进行反馈;
[0010]其中,反馈的所述实现函数的函数相关信息,用于确定与插入的相应预设插桩代码对应的返回信息;确定的所述返回信息,用于确定运行所述应用软件时的运行信息。
[0011]第二方面,本申请还提供了一种编译装置,所述装置包括:
[0012]获取模块,用于响应于编译请求,获取所述编译请求指向的应用软件的类文件集合。
[0013]插桩模块,用于针对所述类文件集合中的每个类文件,根据所针对的类文件中的函数的函数相关信息,从所述针对的类文件中筛选出待插桩的任务函数;在所述针对的类文件中的任务函数中查找用以实现任务函数的代码逻辑的实现函数,并在查找到的所述实现函数中插入预设插桩代码。
[0014]信息反馈模块,用于将所述针对的类文件中的所述实现函数的函数相关信息进行反馈;其中,反馈的所述实现函数的函数相关信息,用于确定与插入的相应预设插桩代码对应的返回信息;确定的所述返回信息,用于确定运行所述应用软件时的运行信息。
[0015]在其中一个实施例中,所述编译装置还包括执行模块,用于响应于对所述应用软件的测试指令,执行编译后的类文件集合中的类文件以运行所述应用软件,并根据执行到
类文件中的预设插桩代码时获取得到的相应返回信息,确定所述应用软件的测试结果。
[0016]在其中一个实施例中,所述插桩模块还用于获取与所述针对的类文件相对应的类节点树;所述类节点树包括与所述针对的类文件中的函数相对应的方法节点;将所述类节点树中的方法节点按照在所述类节点树中的顺序进行遍历;获取与遍历的方法节点相对应的函数的函数相关信息,根据获取的函数相关信息判断与所述遍历的方法节点相对应的函数是否为任务函数。
[0017]在其中一个实施例中,所述插桩模块还用于在与所针对的方法节点相对应的函数的函数相关信息中包括预设插桩注解的情况下,将与所述针对的方法节点相对应的函数作为候选函数;在所述候选函数的函数相关信息包括与第一预设函数名相匹配的函数名、且包括与预设函数描述符相匹配的函数描述符与情况下,确定所述候选函数为待插桩的任务函数。
[0018]在其中一个实施例中,所述插桩模块还用于获取第二预设函数名,并针对所述针对的类文件中的每个所述任务函数,对所针对的任务函数中的内部函数进行遍历;在遍历的内部函数的函数名与所述第二预设函数名相匹配的情况下,确定所述遍历的内部函数为所述针对的任务函数中的实现函数。
[0019]在其中一个实施例中,所述信息反馈模块还用于将所述针对的类文件中每个所述任务函数中的实现函数的函数相关信息写入初始文件中,得到函数相关信息文件;将所述函数相关信息文件发送至服务器,以使所述服务器确定所述针对的类文件中的每个所述预设插桩代码各自对应的返回信息。
[0020]在其中一个实施例中,所述插桩模块还用于针对所述针对的类文件中的每个所述任务函数,提取所针对的任务函数的预设插桩注解中的参数类型注解;根据所述参数类型注解确定对应的返回信息编码方式;生成与所述返回信息编码方式相对应的返回信息编码代码,并将所述返回信息编码代码插入至所述针对的任务函数中的所述实现函数中。
[0021]在其中一个实施例中,所述编译装置还包括执行模块,用于响应于对所述应用软件的测试指令,执行编译后的类文件集合中的类文件,并确定包括有执行到的预设插桩代码的目标任务函数;根据插入至所述目标任务函数中的返回信息编码代码,对获取得到的与所述执行到的预设插桩代码相对应的返回信息进行编码,得到编码返回信息;根据所述编码返回信息,确定所述应用软件的测试结果。
[0022]在其中一个实施例中,所述任务函数为表征异步操作的函数;所述预设插桩代码为网络请求代码,用于请求测试服务器返回相应的返回信息;返回的所述返回信息,用于确定在运行所述应用软件的过程中,执行所述应用软件中的依赖任务函数的依赖函数的执行结果。
[0023]第三方面,本申请还提供了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现本申请实施例提供的任一种编译方法中的步骤。
[0024]第四方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例提供的任一种编译方法中的步骤。
[0025]第五方面,本申请还提供了一种计算机程序产品,所述计算机程序产品,包括计算
机程序,该计算机程序被处理器执行时实现本申请实施例提供的任一种编译方法中的步骤。
[0026]上述编译方法、装置、计算机设备、存储介质和计算机程序产品,通过获取应用软件的类文件,可确定类文件中的待插桩的任务函数,通过确定任务函数,可确定任务函数中的用以真正实现代码逻辑的实现函数,从而在真正实现代码逻辑的实现函数中插入预设插桩代码,以及获取实现函数的函数相关信息。通过获取函数相关信息,可对函数相关信息进行反馈,以基于反馈的函数相关信息确定与相应预设插桩代码相对应的返回信息。通过设置返回信息,可在运行应用软件的类文件,并运行至类文件中的预设插桩代码时,可获取得到相应的返回信息,进而基于获取得到的返回信息,确定应用软件的运行信息。相比于传统的需要对代码进行修改后才能获取到应用软件的运行信息,由于本申请无需修改原代码,只需对类文件进行进一步地编译,基于编译过程在待插桩处插入预设插桩代码,并配置预设插桩代码所对应的返回信息即可,因此本申请大大简化了运行信息的获取流程,提升了运行信息的获取效率。...

【技术保护点】

【技术特征摘要】
1.一种编译方法,其特征在于,所述方法包括:响应于编译请求,获取所述编译请求指向的应用软件的类文件集合;针对所述类文件集合中的每个类文件,根据所针对的类文件中的函数的函数相关信息,从所述针对的类文件中筛选出待插桩的任务函数;在所述针对的类文件中的任务函数中查找用以实现任务函数的代码逻辑的实现函数,并在查找到的所述实现函数中插入预设插桩代码;将所述针对的类文件中的所述实现函数的函数相关信息进行反馈;其中,反馈的所述实现函数的函数相关信息,用于确定与插入的相应预设插桩代码对应的返回信息,确定的所述返回信息,用于确定运行所述应用软件时的运行信息。2.根据权利要求1所述的方法,其特征在于,所述运行信息包括测试结果,所述方法还包括:响应于对所述应用软件的测试指令,执行编译后的类文件集合中的类文件以运行所述应用软件,并根据执行到类文件中的预设插桩代码时获取得到的相应返回信息,确定所述应用软件的测试结果。3.根据权利要求1所述的方法,其特征在于,所述根据所针对的类文件中的函数的函数相关信息,从所述针对的类文件中筛选出待插桩的任务函数包括:获取与所述针对的类文件相对应的类节点树;所述类节点树包括与所述针对的类文件中的函数相对应的方法节点;将所述类节点树中的方法节点按照在所述类节点树中的顺序进行遍历;获取与遍历的方法节点相对应的函数的函数相关信息,根据获取的函数相关信息判断与所述遍历的方法节点相对应的函数是否为任务函数。4.根据权利要求2所述的方法,其特征在于,所述根据获取的函数相关信息判断与所述遍历的方法节点相对应的函数是否为任务函数,包括:在与所针对的方法节点相对应的函数的函数相关信息中包括预设插桩注解的情况下,将与所述针对的方法节点相对应的函数作为候选函数;在所述候选函数的函数相关信息包括与第一预设函数名相匹配的函数名、且包括与预设函数描述符相匹配的函数描述符与情况下,确定所述候选函数为待插桩的任务函数。5.根据权利要求1所述的方法,其特征在于,所述在所述针对的类文件中的任务函数中查找用以实现任务函数的代码逻辑的实现函数,包括:获取第二预设函数名,并针对所述针对的类文件中的每个所述任务函数,对所针对的任务函数中的内部函数进行遍历;在遍历的内部函数的函数名与所述第二预设函数名相匹配的情况下,确定所述遍历的内部函数为所述针对的任务函数中的实现函数。6.根据权利要求1所述的方法,其特征在于,所述将所述实现函数的函数相关信息进行反馈,包括:将所述针对的类文件中每个所述任务函数中的实现函数的函数相关信息写入初始文件中,得到函数相关信息文件;将所述函数相关信息文件发送至服务器,以使所述服务器确定所述针对的类文件中的每个所述预设插桩代码各自对应的返回信息。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:针对所述针对的类文件中的每个所述任务函数,提取所针对的任务函数的预设插桩注解中的参数类型注解;根据所述参数类型注解确定对应的返回信息编码方式;生成与所述返回信息编码方式相对应的返回信息编码代码,并将所述返回信息编码代码插入至所述针对的任务函数中的所述实现函数中。8.根据权利要求7所述的方法,其特征在于,在所述获取与执行到的预设插桩代码对应的返回信息之后,所述方法还包括:响应于对所述应用软件的测试指令,执行编译后的类文件集合中的类文件,并确定包括有执行到的预设插桩代码的目标任务函数;根据插入至所述目标任务函数中的返回信息编码代码,对获取得到的与所述执行到的预设插桩代码相对应的返回信息进行编码,得到编码返回信息;根据所述编码返回信息,确定所述应用软件的测试结果。9.根据权利要求1至8任意一项所述的方法,其特征在于,所述任务函数为表征异步操作的函数;所述预设插桩代码为网络请求代码,用于请求测试服务器返回相应...

【专利技术属性】
技术研发人员:张永康巫文杰柳永峰
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1