本发明涉及计算机数据处理,尤其涉及一种代码重构方法、装置、电子设备及存储介质。
背景技术:
1、在项目持续开发维护的背景下,代码重构技术至关重要。代码重构是指在不改变软件系统外部行为的前提下,改善它的内部结构。代码重构在修改代码的同时修改所有引用该代码的位置。
2、现有技术中,大规模的代码重构方法通常是根据程序代码生成语法树,按照重构语法模型修改语法树,然后根据修改后的语法树生成程序代码的文本内容,最后重新写入程序代码文件。
3、上述方法虽然可以从技术层面解决重构问题,并用自动化的程序替代手工修改,在一定程度上提高了重构过程的效率。但是重构过程中所需要的重构语法模型难以构造,不可避免地增加了重构难度,而且也会对重构结果的准确性和重构过程的效率产生影响。
技术实现思路
1、本发明提供一种代码重构方法、装置、电子设备及存储介质,用以解决现有技术中存在的缺陷。
2、本发明提供一种代码重构方法,包括:
3、从待重构的代码文件集合中选取参考代码文件,计算所述参考代码文件对应的第一抽象语法树与目标代码文件对应的第二抽象语法树之间的差异信息,并基于所述差异信息,生成描述文件;
4、基于所述描述文件,对所述代码文件集合中除所述参考代码文件外的其他代码文件进行重构;
5、其中,所述目标代码文件基于代码重构要求对所述参考代码文件进行重构得到。
6、根据本发明提供的一种代码重构方法,所述代码文件集合中每个代码文件对应的抽象语法树的节点内容中均包含有节点文本表示;
7、相应地,所述基于所述描述文件,对所述代码文件集合中除所述参考代码文件外的其他代码文件进行重构,包括:
8、基于所述代码文件集合对应的编程语言,确定所述差异信息对应的差异节点文本表示;
9、基于所述描述文件、所述差异节点文本表示以及所述其他代码文件对应的抽象语法树的节点内容中包含的节点文本表示,对所述其他代码文件进行重构。
10、根据本发明提供的一种代码重构方法,所述基于所述描述文件、所述差异节点文本表示以及所述其他代码文件对应的抽象语法树的节点内容中包含的节点文本表示,对所述其他代码文件进行重构,包括:
11、对于所述其他代码文件中的任一代码文件,基于所述描述文件,对所述任一代码文件对应的第三抽象语法树进行修改,得到修改后的第四抽象语法树;
12、基于所述差异节点文本表示,对所述第三抽象语法树的节点内容中的节点文本表示进行更新,得到更新后的目标节点文本表示;
13、基于所述第四抽象语法树以及所述目标节点文本表示,得到所述任一代码文件对应的重构结果。
14、根据本发明提供的一种代码重构方法,所述基于所述描述文件,对所述任一代码文件对应的第三抽象语法树进行修改,得到修改后的第四抽象语法树,包括:
15、修改所述描述文件中所述参考代码文件对应的固定值信息,得到重构参考文件;
16、基于所述重构参考文件,对所述第三抽象语法树进行修改,得到所述第四抽象语法树。
17、根据本发明提供的一种代码重构方法,所述基于所述代码文件集合对应的编程语言,确定所述差异信息对应的差异节点文本表示,包括:
18、基于所述编程语言,确定所述差异信息对应的语法模型;
19、基于所述语法模型,确定所述差异节点文本表示;
20、或者,
21、基于所述编程语言,确定所述第二抽象语法树的节点内容中包含的节点文本表示;
22、基于所述第一抽象语法树的节点内容中包含的节点文本表示,以及所述第二抽象语法树的节点内容中包含的节点文本表示,确定所述差异节点文本表示。
23、根据本发明提供的一种代码重构方法,所述代码文件集合中每个代码文件对应的抽象语法树的节点内容中包含的节点文本表示包括标记序列文本表示。
24、根据本发明提供的一种代码重构方法,所述基于所述差异信息,生成描述文件,包括:
25、确定描述语言格式;
26、基于所述描述语言格式,对所述差异信息进行描述,生成所述描述文件。
27、本发明还提供一种代码重构装置,包括:
28、计算模块,用于从待重构的代码文件集合中选取参考代码文件,计算所述参考代码文件对应的第一抽象语法树与目标代码文件对应的第二抽象语法树之间的差异信息,并基于所述差异信息,生成描述文件;
29、重构模块,用于基于所述描述文件,对所述代码文件集合中除所述参考代码文件外的其他代码文件进行重构;
30、其中,所述目标代码文件基于代码重构要求对所述参考代码文件进行修改得到。
31、本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述的代码重构方法。
32、本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述的代码重构方法。
33、本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述的代码重构方法。
34、本发明提供的代码重构方法、装置、电子设备及存储介质,该方法首先从待重构的代码文件集合中选取参考代码文件,计算参考代码文件对应的第一抽象语法树与目标代码文件对应的第二抽象语法树之间的差异信息,并基于差异信息,生成描述文件;此后根据描述文件,对代码文件集合中除参考代码文件外的其他代码文件进行重构。该方法可以自动生成参考代码文件与目标代码文件的重构过程对应的描述文件,不需要借助开发人员人工构建的重构语法模型进行重构,解决了重构过程的描述过于抽象,难以使用的问题,大大降低了重构难度,进而提高了重构结果的准确性和重构过程的效率。
1.一种代码重构方法,其特征在于,包括:
2.根据权利要求1所述的代码重构方法,其特征在于,所述代码文件集合中每个代码文件对应的抽象语法树的节点内容中均包含有节点文本表示;
3.根据权利要求2所述的代码重构方法,其特征在于,所述基于所述描述文件、所述差异节点文本表示以及所述其他代码文件对应的抽象语法树的节点内容中包含的节点文本表示,对所述其他代码文件进行重构,包括:
4.根据权利要求3所述的代码重构方法,其特征在于,所述基于所述描述文件,对所述任一代码文件对应的第三抽象语法树进行修改,得到修改后的第四抽象语法树,包括:
5.根据权利要求2-4中任一项所述的代码重构方法,其特征在于,所述基于所述代码文件集合对应的编程语言,确定所述差异信息对应的差异节点文本表示,包括:
6.根据权利要求2-4中任一项所述的代码重构方法,其特征在于,所述代码文件集合中每个代码文件对应的抽象语法树的节点内容中包含的节点文本表示包括标记序列文本表示。
7.根据权利要求1-4中任一项所述的代码重构方法,其特征在于,所述基于所述差异信息,生成描述文件,包括:
8.一种代码重构装置,其特征在于,包括:
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7中任一项所述的代码重构方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的代码重构方法。