一种抽象语法树重构方法及装置制造方法及图纸

技术编号:28622238 阅读:19 留言:0更新日期:2021-05-28 16:17
本申请实施例提供一种抽象语法树重构方法及装置,可用于信息安全技术领域,其方法包括:根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点;所述第一节点为导入类节点,所述第二节点为非导入类节点;根据第二节点与第一节点的引用关系,确定冗余的第一节点;在所述抽象语法树中,将所有非冗余的第一节点置于所述第二节点之后,生成更新的抽象语法树。本申请明显地提高了开发人员在重构存量代码工作效率,大幅度降低了开发人员的工作量,使得开发人员在重构存量代码时无需考虑删除多余代码导入删除逻辑和检验逻辑,为降低应用技术债务提供了技术支撑。

【技术实现步骤摘要】
一种抽象语法树重构方法及装置
本申请涉及计算机
,具体涉及抽象语法树重构方法及装置。
技术介绍
随着互联网技术和金融科技的发展,项目迭代速度越来越快,但由于开发人员水平层次不齐、历史遗留等问题导致的开发过程中引入了实际不需要使用的类,进而导致了大量的开源jar包依赖,项目工程臃肿等问题,在应用上云等应用场景下,应用体量显得尤其笨重。从单个类来讲,人工通过开发工具参与识别单个类是否存在导入的情况,需要识别出当前类中存在多少类是多余导入的,需要人工甄别,删除和修改后才能清理非必要的代码,人工遍历整个项目和多个项目,实现存量代码的重构。一旦存在规模上百万行的存量的存量项目或出现多个子项目都需要做重构的情况下,对于开发人员无异是一种巨大的技术债务,亟待一种能够自动清理代码导入类的自动化方法。
技术实现思路
针对现有技术中的问题,本申请提供一种抽象语法树重构方法及装置,方法包括:根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点;所述第一节点为导入类节点,所述第二节点为非导入类节点;根据第二节点与第一节点的引用关系,确定冗余的第一节点;在所述抽象语法树中,将所有非冗余的第一节点置于所述第二节点之后,生成更新的抽象语法树。本申请明显地提高了开发人员在重构存量代码工作效率,大幅度降低了开发人员的工作量,使得开发人员在重构存量代码时无需考虑删除多余代码导入删除逻辑和检验逻辑,为降低应用技术债务提供了技术支撑。本专利技术的一方面,提供一种抽象语法树重构方法,包括:根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点;所述第一节点为导入类节点,所述第二节点为非导入类节点;根据第二节点与第一节点的引用关系,确定冗余的第一节点;在所述抽象语法树中,将所有非冗余的第一节点置于所述第二节点之后,生成更新的抽象语法树。在优选的实施例中,还包括:生成所述抽象语法树。在优选的实施例中,根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点,包括:遍历所述抽象语法树,将该抽象语法树上的每个节点各自标记为第一节点和第二节点中的一个。在优选的实施例中,还包括:将所有第一节点归入导入类集合,将所有第二节点归入非导入集合;剔除所述导入类集合中冗余的第一节点;所述将所有非冗余的第一节点置于所述第二节点之后,包括:将剔除冗余之后的所述导入类集合置于所述非导入类集合的尾部。在优选的实施例中,所述根据第二节点与第一节点的引用关系,确定冗余的第一节点,包括:若一个第一节点未被所述第二节点引用,则将该第一节点确定为冗余的第一节点。在优选的实施例中,还包括:根据所述更新的抽象语法树,生成清理后的源代码,具体步骤包括:遍历更新的所述抽象语法树,得到所有节点;根据所有节点生成源代码。在优选的实施例中,所述抽象语法树包括类根节点、包名节点、外部类类节点以及类主体节点;所述根据所有节点生成源代码,包括:按照类别将类根节点、包名节点、外部类类节点以及类主体节点输出至字符流,生成所述源代码。在优选的实施例中,还包括:将清理后的源代码覆盖至指定目录下。本专利技术的又一方面,提供一种抽象语法树重构装置,包括:节点划分模块,根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点;所述第一节点为导入类节点,所述第二节点为非导入类节点;冗余节点确定模块,根据第二节点与第一节点的引用关系,确定冗余的第一节点;抽象语法树更新模块,在所述抽象语法树中,将所有非冗余的第一节点置于所述第二节点之后,生成更新的抽象语法树。在优选的实施例中,还包括:抽象语法树生成模块,生成所述抽象语法树。在优选的实施例中,根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点,包括:遍历所述抽象语法树,将该抽象语法树上的每个节点各自标记为第一节点和第二节点中的一个。在优选的实施例中,还包括:集合生成模块,将所有第一节点归入导入类集合,将所有第二节点归入非导入集合;冗余类剔除模块,剔除所述导入类集合中冗余的第一节点;抽象语法树重构模块,所述将所有非冗余的第一节点置于所述第二节点之后,包括:将剔除冗余之后的所述导入类集合置于所述非导入类集合的尾部。在优选的实施例中,所述根据第二节点与第一节点的引用关系,确定冗余的第一节点,包括:若一个第一节点未被所述第二节点引用,则将该第一节点确定为冗余的第一节点。在优选的实施例中,还包括:源代码更新模块,根据所述更新的抽象语法树,生成清理后的源代码,具体包括:节点获取单元,遍历更新的所述抽象语法树,得到所有节点;源代码生成单元,根据所有节点生成源代码。在优选的实施例中,所述抽象语法树包括类根节点、包名节点、外部类类节点以及类主体节点;所述根据所有节点生成源代码,包括:按照类别将类根节点、包名节点、外部类类节点以及类主体节点输出至字符流,生成所述源代码。在优选的实施例中,还包括:将清理后的源代码覆盖至指定目录下。本专利技术的又一方面,本申请提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的抽象语法树重构方法。本专利技术的又一方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的抽象语法树重构方法。由上述技术方案可知,本申请提供的一种抽象语法树重构方法,方法包括:根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点;所述第一节点为导入类节点,所述第二节点为非导入类节点;根据第二节点与第一节点的引用关系,确定冗余的第一节点;在所述抽象语法树中,将所有非冗余的第一节点置于所述第二节点之后,生成更新的抽象语法树。本申请明显地提高了开发人员在重构存量代码工作效率,大幅度降低了开发人员的工作量,使得开发人员在重构存量代码时无需考虑删除多余代码导入删除逻辑和检验逻辑,为降低应用技术债务提供了技术支撑。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是抽象语法树重构方法流程示意图。图2是使用节点集合重构抽象语法树流程示意图。图3是由抽象语法树重构源代码流程示意图。图4是抽象语法树重构装置结构示意图。图5是本申请实施例中的电子设备的结构示意图。具体实施方式为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述本文档来自技高网...

【技术保护点】
1.一种抽象语法树重构方法,其特征在于,包括:/n根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点;所述第一节点为导入类节点,所述第二节点为非导入类节点;/n根据第二节点与第一节点的引用关系,确定冗余的第一节点;/n在所述抽象语法树中,将所有非冗余的第一节点置于所述第二节点之后,生成更新的抽象语法树。/n

【技术特征摘要】
1.一种抽象语法树重构方法,其特征在于,包括:
根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点;所述第一节点为导入类节点,所述第二节点为非导入类节点;
根据第二节点与第一节点的引用关系,确定冗余的第一节点;
在所述抽象语法树中,将所有非冗余的第一节点置于所述第二节点之后,生成更新的抽象语法树。


2.根据权利要求1所述的抽象语法树重构方法,其特征在于,还包括:生成所述抽象语法树。


3.根据权利要求1所述的抽象语法树重构方法,其特征在于,根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点,包括:
遍历所述抽象语法树,将该抽象语法树上的每个节点各自标记为第一节点和第二节点中的一个。


4.根据权利要求1所述的抽象语法树重构方法,其特征在于,还包括:
将所有第一节点归入导入类集合,将所有第二节点归入非导入集合;
剔除所述导入类集合中冗余的第一节点;
所述将所有非冗余的第一节点置于所述第二节点之后,包括:
将剔除冗余之后的所述导入类集合置于所述非导入类集合的尾部。


5.根据权利要求1所述的抽象语法树重构方法,其特征在于,所述根据第二节点与第一节点的引用关系,确定冗余的第一节点,包括:
若一个第一节点未被所述第二节点引用,则将该第一节点确定为冗余的第一节点。


6.根据权利要求1所述的抽象语法树重构方法,其特征在于,还包括:根据所述更新的抽象语法树,生成清理后的源代码,具体步骤包括:
遍历更新的所述抽象语法树,得到所有节点;
根据所有节点生成源代码。


7.根据权利要求6所述的抽象语法树重构方法,其特征在于,所述抽象语法树包括类根节点、包名节点、外部类类节点以及类主体节点;所述根据所有节点生成源代码,包括:按照类别将类根节点、包名节点、外部类类节点以及类主体节点输出至字符流,生成所述源代码。


8.根据权利要求1所述的抽象语法树重构方法,其特征在于,还包括:将清理后的源代码覆盖至指定目录下。


9.一种抽象语法树重构装置,其特征在于,包括:
节点划分模块,根据一预设的抽象语法树,将该抽象语法树上的所有节点划分为第一节点和第二节点;所述第一节点为导入类节点,所述第二节点为非导入类节点;
冗余节点确定模块,根据第二节点与第一节点的引用关系,...

【专利技术属性】
技术研发人员:徐克宝杨丹何旭敏杨鹏宇
申请(专利权)人:中国工商银行股份有限公司
类型:发明
国别省市:北京;11

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

1