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

技术编号:34325473 阅读:11 留言:0更新日期:2022-07-31 01:03
本申请提供了一种代码转换方法及装置、电子设备、存储介质,该方法包括:获取待转换的源代码,并确定源代码对应的常量信息、变量信息以及代码行信息。根据常量信息,从源代码中识别第一代码。根据变量信息,从源代码中识别第二代码。根据代码行信息,从源代码中识别满足封装条件的代码块。将代码块封装为目标对象,并获得代码块与目标对象的绑定信息。在对源代码进行转换的过程中,将第一代码转换为类静态变量,将第二代码转换为实体类,以及根据绑定信息调用目标对象,从而在降低代码重复率的同时,改善代码转换效率。改善代码转换效率。改善代码转换效率。

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


[0001]本专利技术涉及计算机
,具体涉及一种代码转换方法及装置、电子设备、存储介质。

技术介绍

[0002]人为编写的代码中,通常会存在重复性代码,比如在一个方法中反复使用相同常量等,如果将这些重复性代码逐行直译成面对对象语言的程序代码,虽然可以保障语句准确性,却对后续开发维护带来较大不便。因此,现有方式中,开发人员会对初步转换后的代码进行人为优化,以降低代码重复率,但这种方式增加了人力成本,亦不利于提高整体的代码转换效率。

技术实现思路

[0003]本申请提供一种代码转换方法及装置、电子设备、存储介质,其主要目的在于降低代码重复率的同时,改善代码转换效率。
[0004]为实现上述目的,本申请实施例提供了一种代码转换方法,所述方法包括:
[0005]获取待转换的源代码,并确定所述源代码对应的常量信息、变量信息以及代码行信息;
[0006]根据所述常量信息,从所述源代码中识别第一代码;
[0007]根据所述变量信息,从所述源代码中识别第二代码;
[0008]根据所述代码行信息,从所述源代码中识别满足封装条件的代码块;
[0009]将所述代码块封装为目标对象,并获得所述代码块与所述目标对象的绑定信息;
[0010]在对所述源代码进行转换的过程中,将所述第一代码转换为类静态变量,将所述第二代码转换为实体类,以及根据所述绑定信息调用所述目标对象。
[0011]一些可选的实施方式中,所述确定所述源代码对应的常量信息、变量信息以及代码行信息,包括:
[0012]对所述源代码进行语法解析,得到所述源代码的语法树;
[0013]根据所述语法树进行遍历,生成常量信息、变量信息以及代码行信息。
[0014]一些可选的实施方式中,所述根据所述常量信息,从所述源代码中识别第一代码,包括:
[0015]根据所述常量信息,获取所述源代码中各个常量的出现次数;
[0016]根据出现次数超过预设次数的常量,确定第一代码。
[0017]一些可选的实施方式中,所述根据所述变量信息,从所述源代码中识别第二代码,包括:
[0018]根据所述变量信息,获取所述源代码中的被标记变量以及所述被标记变量对应的标签,所述被标记变量表示基于预设规则添加有标签的变量;
[0019]若所述被标记变量对应的标签中包括指定标签,将所述被标记变量确定为高频变
量;
[0020]若所述高频变量的数量超过预设数量,则根据所述高频变量确定第二代码。
[0021]一些可选的实施方式中,所述指定标签包括第一标签和第二标签;所述确定所述源代码对应的变量信息,包括:
[0022]从所述源代码中识别出取值语句和赋值语句;
[0023]将所述取值语句中包括的变量确定为第一变量,并为所述第一变量添加第一标签;
[0024]将所述赋值语句中包括的变量确定为第二变量,并为所述第二变量添加第二标签;
[0025]将所述第一变量和所述第二变量加入所述源代码对应的变量信息。
[0026]一些可选的实施方式中,所述代码行信息包括所述源代码中每个代码行对应的元信息和排序信息,所述排序信息用于表示所述代码行的排列顺序;所述根据所述代码行信息,从所述源代码中识别满足封装条件的代码块,包括:
[0027]根据所述元信息,对所述源代码中所有代码行进行两两匹配,得到匹配结果;
[0028]根据所述排序信息和所述匹配结果,获取匹配成功的第一代码行和第二代码行,所述第一代码行和所述第二代码行满足:连续排列在所述第一代码行之前的代码行与连续排列在所述第二代码行之前的代码行未匹配成功;
[0029]若根据所述排序信息和所述匹配结果,判定连续排列在所述第一代码行之后的N个代码行与连续排列在所述第二代码行之后的N个代码行均匹配成功,则根据所述第一代码行以及连续排列在所述第一代码行之后的N个代码行,生成满足封装条件的代码块,N为正整数。
[0030]一些可选的实施方式中,所述将所述代码块封装为目标对象,包括:
[0031]若所述代码块中包括的代码行的数量超过指定行数,获取所述代码块中包括的变量和执行代码;
[0032]以所述代码块中包括的变量为入参,并结合所述执行代码,将所述代码块封装为目标对象。
[0033]为实现上述目的,本申请实施例还提出了一种代码转换装置,所述装置包括:
[0034]获取模块,用于获取待转换的源代码;
[0035]确定模块,用于确定所述源代码对应的常量信息、变量信息以及代码行信息;
[0036]第一识别模块,用于根据所述常量信息,从所述源代码中识别第一代码;
[0037]第二识别模块,用于根据所述变量信息,从所述源代码中识别第二代码;
[0038]第三识别模块,用于根据所述代码行信息,从所述源代码中识别满足封装条件的代码块;
[0039]封装模块,用于将所述代码块封装为目标对象,并获得所述代码块与所述目标对象的绑定信息;
[0040]转换模块,用于在对所述源代码进行转换的过程中,将所述第一代码转换为类静态变量,将所述第二代码转换为实体类,以及根据所述绑定信息调用所述目标对象。
[0041]为实现上述目的,本申请实施例还提出了一种电子设备,所述电子设备包括存储器和处理器,所述存储器上存储有程序,所述程序被所述处理器执行时实现前述方法的步
骤。
[0042]为实现上述目的,本申请提供了一种存储介质,用于计算机可读存储,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述方法的步骤。
[0043]本申请提出的代码转换方法及装置、电子设备、存储介质,通过确定源代码的常量信息、变量信息以及代码行信息,可以根据常量信息识别出第一代码、根据变量信息识别出第二代码以及根据代码行信息识别满足封装条件的代码块,便于确定在代码转换中进行常量降重优化、变量内聚以及代码块封装的代码对象,还可以将根据代码块封装的目标对象与代码块绑定,便于直接调用相关对象。基于此,在对源代码进行转换的过程中,将第一代码转换为类静态变量、将第二代码转换为实体类,以及根据绑定信息调用目标对象,能够满足面对对象语言的编程风格,既提高了代码转换的可读性,降低代码重复率,有利于优化代码结构,又改善了代码转换后的可维护性。此外,还能够减少代码转换时的人为介入,避免了人为修改代码所引入的低级失误,既降低了人力成本,又改善了转化代码的质量,避免简单生硬的转化操作,进而改善代码转换效率。
附图说明
[0044]图1是本申请实施例所应用的一种电子设备的结构框图;
[0045]图2是本申请实施例提供的一种代码转换方法的流程示意图;
[0046]图3是本申请实施例中一种源代码的示意图;
[0047]图4是图2中步骤S230的一种具体流程示意本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码转换方法,其特征在于,所述方法包括:获取待转换的源代码,并确定所述源代码对应的常量信息、变量信息以及代码行信息;根据所述常量信息,从所述源代码中识别第一代码;根据所述变量信息,从所述源代码中识别第二代码;根据所述代码行信息,从所述源代码中识别满足封装条件的代码块;将所述代码块封装为目标对象,并获得所述代码块与所述目标对象的绑定信息;在对所述源代码进行转换的过程中,将所述第一代码转换为类静态变量,将所述第二代码转换为实体类,以及根据所述绑定信息调用所述目标对象。2.根据权利要求1所述的方法,其特征于,所述确定所述源代码对应的常量信息、变量信息以及代码行信息,包括:对所述源代码进行语法解析,得到所述源代码的语法树;根据所述语法树进行遍历,生成常量信息、变量信息以及代码行信息。3.根据权利要求1或2所述的方法,其特征在于,所述根据所述常量信息,从所述源代码中识别第一代码,包括:根据所述常量信息,获取所述源代码中各个常量的出现次数;根据出现次数超过预设次数的常量,确定第一代码。4.根据权利要求1或2所述的方法,其特征在于,所述根据所述变量信息,从所述源代码中识别第二代码,包括:根据所述变量信息,获取所述源代码中的被标记变量以及所述被标记变量对应的标签,所述被标记变量表示基于预设规则添加有标签的变量;若所述被标记变量对应的标签中包括指定标签,将所述被标记变量确定为高频变量;若所述高频变量的数量超过预设数量,则根据所述高频变量确定第二代码。5.根据权利要求4所述的方法,其特征在于,所述指定标签包括第一标签和第二标签;所述确定所述源代码对应的变量信息,包括:从所述源代码中识别出取值语句和赋值语句;将所述取值语句中包括的变量确定为第一变量,并为所述第一变量添加第一标签;将所述赋值语句中包括的变量确定为第二变量,并为所述第二变量添加第二标签;将所述第一变量和所述第二变量加入所述源代码对应的变量信息。6.根据权利要求1或2所述的方法,其特征在于,所述代码行信息包括所述源代码中每个代码行对应的元信息和排序信息,所述排序信息用于表示所述代码行的排列顺序;所述根据所述代码行信息,从所述源代码中...

【专利技术属性】
技术研发人员:温秋明钟加武黄聪
申请(专利权)人:中国平安人寿保险股份有限公司
类型:发明
国别省市:

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

1