[发明专利]一种抽象语法树重构方法及装置在审
申请号: | 202110343587.6 | 申请日: | 2021-03-30 |
公开(公告)号: | CN112860264A | 公开(公告)日: | 2021-05-28 |
发明(设计)人: | 徐克宝;杨丹;何旭敏;杨鹏宇 | 申请(专利权)人: | 中国工商银行股份有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京三友知识产权代理有限公司 11127 | 代理人: | 任默闻;王涛 |
地址: | 100140 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 抽象 语法 树重构 方法 装置 | ||
本申请实施例提供一种抽象语法树重构方法及装置,可用于信息安全技术领域,其方法包括:根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点;所述第一节点为导入类节点,所述第二节点为非导入类节点;根据第二节点与第一节点的引用关系,确定冗余的第一节点;在所述抽象语法树中,将所有非冗余的第一节点置于所述第二节点之后,生成更新的抽象语法树。本申请明显地提高了开发人员在重构存量代码工作效率,大幅度降低了开发人员的工作量,使得开发人员在重构存量代码时无需考虑删除多余代码导入删除逻辑和检验逻辑,为降低应用技术债务提供了技术支撑。
技术领域
本申请涉及计算机技术领域,具体涉及抽象语法树重构方法及装置。
背景技术
随着互联网技术和金融科技的发展,项目迭代速度越来越快,但由于开发人员水平层次不齐、历史遗留等问题导致的开发过程中引入了实际不需要使用的类,进而导致了大量的开源jar包依赖,项目工程臃肿等问题,在应用上云等应用场景下,应用体量显得尤其笨重。从单个类来讲,人工通过开发工具参与识别单个类是否存在导入的情况,需要识别出当前类中存在多少类是多余导入的,需要人工甄别,删除和修改后才能清理非必要的代码,人工遍历整个项目和多个项目,实现存量代码的重构。一旦存在规模上百万行的存量的存量项目或出现多个子项目都需要做重构的情况下,对于开发人员无异是一种巨大的技术债务,亟待一种能够自动清理代码导入类的自动化方法。
发明内容
针对现有技术中的问题,本申请提供一种抽象语法树重构方法及装置,方法包括:根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点;所述第一节点为导入类节点,所述第二节点为非导入类节点;根据第二节点与第一节点的引用关系,确定冗余的第一节点;在所述抽象语法树中,将所有非冗余的第一节点置于所述第二节点之后,生成更新的抽象语法树。本申请明显地提高了开发人员在重构存量代码工作效率,大幅度降低了开发人员的工作量,使得开发人员在重构存量代码时无需考虑删除多余代码导入删除逻辑和检验逻辑,为降低应用技术债务提供了技术支撑。
本发明的一方面,提供一种抽象语法树重构方法,包括:
根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点;所述第一节点为导入类节点,所述第二节点为非导入类节点;
根据第二节点与第一节点的引用关系,确定冗余的第一节点;
在所述抽象语法树中,将所有非冗余的第一节点置于所述第二节点之后,生成更新的抽象语法树。
在优选的实施例中,还包括:生成所述抽象语法树。
在优选的实施例中,根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点,包括:
遍历所述抽象语法树,将该抽象语法树上的每个节点各自标记为第一节点和第二节点中的一个。
在优选的实施例中,还包括:
将所有第一节点归入导入类集合,将所有第二节点归入非导入集合;
剔除所述导入类集合中冗余的第一节点;
所述将所有非冗余的第一节点置于所述第二节点之后,包括:
将剔除冗余之后的所述导入类集合置于所述非导入类集合的尾部。
在优选的实施例中,所述根据第二节点与第一节点的引用关系,确定冗余的第一节点,包括:
若一个第一节点未被所述第二节点引用,则将该第一节点确定为冗余的第一节点。
在优选的实施例中,还包括:根据所述更新的抽象语法树,生成清理后的源代码,具体步骤包括:
遍历更新的所述抽象语法树,得到所有节点;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国工商银行股份有限公司,未经中国工商银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110343587.6/2.html,转载请声明来源钻瓜专利网。