[发明专利]代码注入方法和装置、电子设备及存储介质有效
| 申请号: | 202010002458.6 | 申请日: | 2020-01-02 |
| 公开(公告)号: | CN111158667B | 公开(公告)日: | 2023-08-01 |
| 发明(设计)人: | 林寿耿 | 申请(专利权)人: | 广州虎牙科技有限公司 |
| 主分类号: | G06F8/30 | 分类号: | G06F8/30 |
| 代理公司: | 北京超凡宏宇专利代理事务所(特殊普通合伙) 11463 | 代理人: | 胡蓉 |
| 地址: | 511400 广东省广州市番禺*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 代码 注入 方法 装置 电子设备 存储 介质 | ||
1.一种代码注入方法,其特征在于,包括:
基于预先配置的代码预处理器对第一程序代码进行预处理,并基于预处理的结果生成语法树对象,其中所述第一程序代码用于表征想要实现的主要功能;
基于所述语法树对象确定位置信息和生成第二程序代码,其中,该位置信息用于标识该第二程序代码需要注入至所述第一程序代码的位置,所述第二程序代码用于表征在前述主要功能基础上实现的辅助功能;
基于所述位置信息将所述第二程序代码注入至所述第一程序代码;
其中,所述基于所述语法树对象确定位置信息和生成第二程序代码的步骤,包括:
从所述第一程序代码包括的至少一个注解中确定目标注解,并基于所述语法树对象生成语法树节点操作对象和语法树构建对象,其中所述目标注解具有待生成的第二程序代码的相关信息;
基于所述目标注解和所述语法树节点操作对象确定位置信息;
基于所述目标注解和所述语法树构建对象生成第二程序代码。
2.根据权利要求1所述的代码注入方法,其特征在于,所述基于预先配置的代码预处理器对第一程序代码进行预处理,并基于预处理的结果生成语法树对象的步骤,包括:
基于对注解处理器的继承操作配置生成代码预处理器;
基于所述代码预处理器对第一程序代码进行预处理生成目标文件,并基于该目标文件生成语法树对象。
3.根据权利要求2所述的代码注入方法,其特征在于,所述基于该目标文件生成语法树对象的步骤,包括:
对所述目标文件中的初始化方法进行处理,得到所述第一程序代码的环境对象,并基于该环境对象生成语法树对象。
4.根据权利要求1-3任意一项所述的代码注入方法,其特征在于,所述从所述第一程序代码包括的至少一个注解中确定目标注解的步骤,包括:
对目标文件中的注解获取方法进行处理,得到所述第一程序代码包括的至少一个注解中的目标注解,其中,所述目标文件为所述第一程序代码所在的文件。
5.根据权利要求1-3任意一项所述的代码注入方法,其特征在于,所述基于所述目标注解和所述语法树节点操作对象确定位置信息的步骤,包括:
基于所述目标注解和所述语法树节点操作对象确定目标程序代码段的接口信息,其中,所述第一程序代码包括至少一个程序代码段,所述接口信息用于标识所述目标程序代码段在所述第一程序代码中的位置。
6.根据权利要求1-3任意一项所述的代码注入方法,其特征在于,所述基于所述目标注解和所述语法树构建对象生成第二程序代码的步骤,包括:
基于所述语法树构建对象生成至少一个代码生成方法;
基于所述至少一个代码生成方法和所述目标注解生成第二程序代码。
7.一种代码注入装置,其特征在于,包括:
对象生成模块,用于基于预先配置的代码预处理器对第一程序代码进行预处理,并基于预处理的结果生成语法树对象,其中所述第一程序代码用于表征想要实现的主要功能;
对象处理模块,用于基于所述语法树对象确定位置信息和生成第二程序代码,其中,该位置信息用于标识该第二程序代码需要注入至所述第一程序代码的位置,所述第二程序代码用于表征在前述主要功能基础上实现的辅助功能;
代码注入模块,用于基于所述位置信息将所述第二程序代码注入至所述第一程序代码;
其中,所述对象处理模块基于所述语法树对象确定位置信息和生成第二程序代码的方式,包括:
从所述第一程序代码包括的至少一个注解中确定目标注解,并基于所述语法树对象生成语法树节点操作对象和语法树构建对象,其中所述目标注解具有待生成的第二程序代码的相关信息;
基于所述目标注解和所述语法树节点操作对象确定位置信息;
基于所述目标注解和所述语法树构建对象生成第二程序代码。
8.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
与所述存储器连接的处理器,用于执行所述计算机程序,以实现权利要求1-6任意一项所述的代码注入方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被执行时实现权利要求1-6任意一项所述的代码注入方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广州虎牙科技有限公司,未经广州虎牙科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010002458.6/1.html,转载请声明来源钻瓜专利网。





