代码重构方法、装置、电子设备及存储介质制造方法及图纸

技术编号:37147435 阅读:17 留言:0更新日期:2023-04-06 22:00
本发明专利技术涉及计算机数据处理技术领域,提供一种代码重构方法、装置、电子设备及存储介质,该方法首先从待重构的代码文件集合中选取参考代码文件,计算参考代码文件对应的第一抽象语法树与目标代码文件对应的第二抽象语法树之间的差异信息,并基于差异信息,生成描述文件;此后根据描述文件,对代码文件集合中除参考代码文件外的其他代码文件进行重构。该方法可以自动生成参考代码文件与目标代码文件的重构过程对应的描述文件,不需要借助开发人员人工构建的重构语法模型进行重构,解决了重构过程的描述过于抽象,难以使用的问题,大大降低了重构难度,进而提高了重构结果的准确性和重构过程的效率。重构过程的效率。重构过程的效率。

【技术实现步骤摘要】
代码重构方法、装置、电子设备及存储介质


[0001]本专利技术涉及计算机数据处理
,尤其涉及一种代码重构方法、装置、电子设备及存储介质。

技术介绍

[0002]在项目持续开发维护的背景下,代码重构技术至关重要。代码重构是指在不改变软件系统外部行为的前提下,改善它的内部结构。代码重构在修改代码的同时修改所有引用该代码的位置。
[0003]现有技术中,大规模的代码重构方法通常是根据程序代码生成语法树,按照重构语法模型修改语法树,然后根据修改后的语法树生成程序代码的文本内容,最后重新写入程序代码文件。
[0004]上述方法虽然可以从技术层面解决重构问题,并用自动化的程序替代手工修改,在一定程度上提高了重构过程的效率。但是重构过程中所需要的重构语法模型难以构造,不可避免地增加了重构难度,而且也会对重构结果的准确性和重构过程的效率产生影响。

技术实现思路

[0005]本专利技术提供一种代码重构方法、装置、电子设备及存储介质,用以解决现有技术中存在的缺陷。
[0006]本专利技术提供一种代码重构方法,包括:从待重构的代码文件集合中选取参考代码文件,计算所述参考代码文件对应的第一抽象语法树与目标代码文件对应的第二抽象语法树之间的差异信息,并基于所述差异信息,生成描述文件;基于所述描述文件,对所述代码文件集合中除所述参考代码文件外的其他代码文件进行重构;其中,所述目标代码文件基于代码重构要求对所述参考代码文件进行重构得到。
[0007]根据本专利技术提供的一种代码重构方法,所述代码文件集合中每个代码文件对应的抽象语法树的节点内容中均包含有节点文本表示;相应地,所述基于所述描述文件,对所述代码文件集合中除所述参考代码文件外的其他代码文件进行重构,包括:基于所述代码文件集合对应的编程语言,确定所述差异信息对应的差异节点文本表示;基于所述描述文件、所述差异节点文本表示以及所述其他代码文件对应的抽象语法树的节点内容中包含的节点文本表示,对所述其他代码文件进行重构。
[0008]根据本专利技术提供的一种代码重构方法,所述基于所述描述文件、所述差异节点文本表示以及所述其他代码文件对应的抽象语法树的节点内容中包含的节点文本表示,对所述其他代码文件进行重构,包括:
对于所述其他代码文件中的任一代码文件,基于所述描述文件,对所述任一代码文件对应的第三抽象语法树进行修改,得到修改后的第四抽象语法树;基于所述差异节点文本表示,对所述第三抽象语法树的节点内容中的节点文本表示进行更新,得到更新后的目标节点文本表示;基于所述第四抽象语法树以及所述目标节点文本表示,得到所述任一代码文件对应的重构结果。
[0009]根据本专利技术提供的一种代码重构方法,所述基于所述描述文件,对所述任一代码文件对应的第三抽象语法树进行修改,得到修改后的第四抽象语法树,包括:修改所述描述文件中所述参考代码文件对应的固定值信息,得到重构参考文件;基于所述重构参考文件,对所述第三抽象语法树进行修改,得到所述第四抽象语法树。
[0010]根据本专利技术提供的一种代码重构方法,所述基于所述代码文件集合对应的编程语言,确定所述差异信息对应的差异节点文本表示,包括:基于所述编程语言,确定所述差异信息对应的语法模型;基于所述语法模型,确定所述差异节点文本表示;或者,基于所述编程语言,确定所述第二抽象语法树的节点内容中包含的节点文本表示;基于所述第一抽象语法树的节点内容中包含的节点文本表示,以及所述第二抽象语法树的节点内容中包含的节点文本表示,确定所述差异节点文本表示。
[0011]根据本专利技术提供的一种代码重构方法,所述代码文件集合中每个代码文件对应的抽象语法树的节点内容中包含的节点文本表示包括标记序列文本表示。
[0012]根据本专利技术提供的一种代码重构方法,所述基于所述差异信息,生成描述文件,包括:确定描述语言格式;基于所述描述语言格式,对所述差异信息进行描述,生成所述描述文件。
[0013]本专利技术还提供一种代码重构装置,包括:计算模块,用于从待重构的代码文件集合中选取参考代码文件,计算所述参考代码文件对应的第一抽象语法树与目标代码文件对应的第二抽象语法树之间的差异信息,并基于所述差异信息,生成描述文件;重构模块,用于基于所述描述文件,对所述代码文件集合中除所述参考代码文件外的其他代码文件进行重构;其中,所述目标代码文件基于代码重构要求对所述参考代码文件进行修改得到。
[0014]本专利技术还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述的代码重构方法。
[0015]本专利技术还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述的代码重构方法。
[0016]本专利技术还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器
执行时实现如上述任一种所述的代码重构方法。
[0017]本专利技术提供的代码重构方法、装置、电子设备及存储介质,该方法首先从待重构的代码文件集合中选取参考代码文件,计算参考代码文件对应的第一抽象语法树与目标代码文件对应的第二抽象语法树之间的差异信息,并基于差异信息,生成描述文件;此后根据描述文件,对代码文件集合中除参考代码文件外的其他代码文件进行重构。该方法可以自动生成参考代码文件与目标代码文件的重构过程对应的描述文件,不需要借助开发人员人工构建的重构语法模型进行重构,解决了重构过程的描述过于抽象,难以使用的问题,大大降低了重构难度,进而提高了重构结果的准确性和重构过程的效率。
附图说明
[0018]为了更清楚地说明本专利技术或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单的介绍。显而易见,下面描述中的附图,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0019]图1是现有技术中的代码重构方法的流程示意图;图2是本专利技术提供的代码重构方法的流程示意图之一;图3是本专利技术提供的代码重构方法的流程示意图之二;图4是本专利技术提供的代码重构方法中节点P对应的节点文本表示示意图;图5是本专利技术提供的代码重构方法中重放过程的流程示意图;图6是本专利技术提供的代码重构装置的结构示意图;图7是本专利技术提供的电子设备的结构示意图。
具体实施方式
[0020]为使本专利技术的目的、技术方案和优点更加清楚,下面将结合本专利技术中的附图,对本专利技术中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0021]如图1所示,现有技术中的代码重构方法通常包括:首先对程序代码文件进行词法分析,得到标记(token)序列,然后对标记序列进行语法分析,得到抽象语法树,此后构建重构语法模型,通过重构语法模型自动化重构出修改后的抽象语法树,最后通过抽本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码重构方法,其特征在于,包括:从待重构的代码文件集合中选取参考代码文件,计算所述参考代码文件对应的第一抽象语法树与目标代码文件对应的第二抽象语法树之间的差异信息,并基于所述差异信息,生成描述文件;基于所述描述文件,对所述代码文件集合中除所述参考代码文件外的其他代码文件进行重构;其中,所述目标代码文件基于代码重构要求对所述参考代码文件进行重构得到。2.根据权利要求1所述的代码重构方法,其特征在于,所述代码文件集合中每个代码文件对应的抽象语法树的节点内容中均包含有节点文本表示;相应地,所述基于所述描述文件,对所述代码文件集合中除所述参考代码文件外的其他代码文件进行重构,包括:基于所述代码文件集合对应的编程语言,确定所述差异信息对应的差异节点文本表示;基于所述描述文件、所述差异节点文本表示以及所述其他代码文件对应的抽象语法树的节点内容中包含的节点文本表示,对所述其他代码文件进行重构。3.根据权利要求2所述的代码重构方法,其特征在于,所述基于所述描述文件、所述差异节点文本表示以及所述其他代码文件对应的抽象语法树的节点内容中包含的节点文本表示,对所述其他代码文件进行重构,包括:对于所述其他代码文件中的任一代码文件,基于所述描述文件,对所述任一代码文件对应的第三抽象语法树进行修改,得到修改后的第四抽象语法树;基于所述差异节点文本表示,对所述第三抽象语法树的节点内容中的节点文本表示进行更新,得到更新后的目标节点文本表示;基于所述第四抽象语法树以及所述目标节点文本表示,得到所述任一代码文件对应的重构结果。4.根据权利要求3所述的代码重构方法,其特征在于,所述基于所述描述文件,对所述任一代码文件对应的第三抽象语法树进行修改,得到修改后的第四抽象语法树,包括:修改所述描述文件中所述参考代码文件对应的固定值信息,得到重构参考文件;基于所述重构参考文件,对所述第三抽象语法树进行修改,得到所述第四抽象语法树。5.根据权利要求2
...

【专利技术属性】
技术研发人员:申赛
申请(专利权)人:成方金融科技有限公司
类型:发明
国别省市:

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

1