【技术实现步骤摘要】
一种抽象语法树重构方法及装置
本申请涉及计算机
,具体涉及抽象语法树重构方法及装置。
技术介绍
随着互联网技术和金融科技的发展,项目迭代速度越来越快,但由于开发人员水平层次不齐、历史遗留等问题导致的开发过程中引入了实际不需要使用的类,进而导致了大量的开源jar包依赖,项目工程臃肿等问题,在应用上云等应用场景下,应用体量显得尤其笨重。从单个类来讲,人工通过开发工具参与识别单个类是否存在导入的情况,需要识别出当前类中存在多少类是多余导入的,需要人工甄别,删除和修改后才能清理非必要的代码,人工遍历整个项目和多个项目,实现存量代码的重构。一旦存在规模上百万行的存量的存量项目或出现多个子项目都需要做重构的情况下,对于开发人员无异是一种巨大的技术债务,亟待一种能够自动清理代码导入类的自动化方法。
技术实现思路
针对现有技术中的问题,本申请提供一种抽象语法树重构方法及装置,方法包括:根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点;所述第一节点为导入类节点,所述第二节点为非导入类节点;根据第二节点与第一节点的引用关系,确定冗余的第一节点;在所述抽象语法树中,将所有非冗余的第一节点置于所述第二节点之后,生成更新的抽象语法树。本申请明显地提高了开发人员在重构存量代码工作效率,大幅度降低了开发人员的工作量,使得开发人员在重构存量代码时无需考虑删除多余代码导入删除逻辑和检验逻辑,为降低应用技术债务提供了技术支撑。本专利技术的一方面,提供一种抽象语法树重构方法,包括:根据一 ...
【技术保护点】
1.一种抽象语法树重构方法,其特征在于,包括:/n根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点;所述第一节点为导入类节点,所述第二节点为非导入类节点;/n根据第二节点与第一节点的引用关系,确定冗余的第一节点;/n在所述抽象语法树中,将所有非冗余的第一节点置于所述第二节点之后,生成更新的抽象语法树。/n
【技术特征摘要】
1.一种抽象语法树重构方法,其特征在于,包括:
根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点;所述第一节点为导入类节点,所述第二节点为非导入类节点;
根据第二节点与第一节点的引用关系,确定冗余的第一节点;
在所述抽象语法树中,将所有非冗余的第一节点置于所述第二节点之后,生成更新的抽象语法树。
2.根据权利要求1所述的抽象语法树重构方法,其特征在于,还包括:生成所述抽象语法树。
3.根据权利要求1所述的抽象语法树重构方法,其特征在于,根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点,包括:
遍历所述抽象语法树,将该抽象语法树上的每个节点各自标记为第一节点和第二节点中的一个。
4.根据权利要求1所述的抽象语法树重构方法,其特征在于,还包括:
将所有第一节点归入导入类集合,将所有第二节点归入非导入集合;
剔除所述导入类集合中冗余的第一节点;
所述将所有非冗余的第一节点置于所述第二节点之后,包括:
将剔除冗余之后的所述导入类集合置于所述非导入类集合的尾部。
5.根据权利要求1所述的抽象语法树重构方法,其特征在于,所述根据第二节点与第一节点的引用关系,确定冗余的第一节点,包括:
若一个第一节点未被所述第二节点引用,则将该第一节点确定为冗余的第一节点。
6.根据权利要求1所述的抽象语法树重构方法,其特征在于,还包括:根据所述更新的抽象语法树,生成清理后的源代码,具体步骤包括:
遍历更新的所述抽象语法树,得到所有节点;
根据所有节点生成源代码。
7.根据权利要求6所述的抽象语法树重构方法,其特征在于,所述抽象语法树包括类根节点、包名节点、外部类类节点以及类主体节点;所述根据所有节点生成源代码,包括:按照类别将类根节点、包名节点、外部类类节点以及类主体节点输出至字符流,生成所述源代码。
8.根据权利要求1所述的抽象语法树重构方法,其特征在于,还包括:将清理后的源代码覆盖至指定目录下。
9.一种抽象语法树重构装置,其特征在于,包括:
节点划分模块,根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点;所述第一节点为导入类节点,所述第二节点为非导入类节点;
冗余节点确定模块,根据第二节点与第一节点的引用关系,...
【专利技术属性】
技术研发人员:徐克宝,杨丹,何旭敏,杨鹏宇,
申请(专利权)人:中国工商银行股份有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。