一种代码处理方法、装置、电子设备及存储介质与流程

文档序号:28533412发布日期:2022-01-19 13:35阅读:59来源:国知局
一种代码处理方法、装置、电子设备及存储介质与流程

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.第三获取模块,用于根据代码规范性修正模型获取与所述第一目标代码对应的、
符合代码规范性规则的第二目标代码;所述第一目标代码的执行结果与所述第二目标代码的执行结果相同;
35.其中,所述代码规范性修正模型是根据第一样本代码以及第二样本代码对模型训练,直至模型中的参数收敛而得到的;所述第一样本代码包括符合代码规范性规则的代码,所述第二样本代码包括生成的与所述第一样本代码对应的、不符合代码规范性规则的样本代码;所述第一样本代码能够被正常编译;所述第二样本代码能够被正常编译;所述第一样本代码的执行结果与所述第二样本代码的执行结果相同。
36.第五方面,本技术示出了一种电子设备,所述电子设备包括:
37.处理器;
38.用于存储处理器可执行指令的存储器;
39.其中,所述处理器被配置为执行如第一方面所述的代码处理方法。
40.第六方面,本技术示出了一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如第一方面所述的代码处理方法。
41.第七方面,本技术示出了一种计算机程序产品,当所述计算机程序产品中的指令由电子设备的处理器执行时,使得电子设备能够执行如第一方面所述的代码处理方法。
42.第八方面,本技术示出了一种电子设备,所述电子设备包括:
43.处理器;
44.用于存储处理器可执行指令的存储器;
45.其中,所述处理器被配置为执行如第二方面所述的代码处理方法。
46.第九方面,本技术示出了一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如第二方面所述的代码处理方法。
47.第十方面,本技术示出了一种计算机程序产品,当所述计算机程序产品中的指令由电子设备的处理器执行时,使得电子设备能够执行如第二方面所述的代码处理方法。
48.本技术提供的技术方案可以包括以下有益效果:
49.在本技术中,获取符合代码规范性规则的第一样本代码。第一样本代码能够被正常编译。生成与第一样本代码对应的、不符合代码规范性规则的第二样本代码。第二样本代码能够被正常编译。对第一样本代码编译得到的可执行文件的执行结果与对第一样本代码编译得到的可执行文件的执行结果相同。根据第一样本代码以及第二样本代码对模型训练,直至模型中的参数收敛,从而得到代码规范性修正模型。
50.如此,之后在需要对不符合代码规范性规则的代码修正时,可以获取不符合代码规范性规则的第一目标代码;第一目标代码能够被正常编译。根据代码规范性修正模型获取与第一目标代码对应的、符合代码规范性规则的第二目标代码;对第一目标代码编译得到的可执行文件的执行结果与对第二目标代码编译得到的可执行文件的执行结果相同。
51.这样,在对不符合代码规范性规则的代码修正的过程可以没有人工的参与,从而可以降低人工成本,其次,通过代码规范性修正模型对不符合代码规范性规则的代码修正可以提高修正的准确性以及完整性等。
附图说明
52.图1是本技术示出的一种代码处理方法的步骤流程图。
53.图2是本技术示出的一种代码处理方法的步骤流程图。
54.图3是本技术示出的一种代码处理装置的结构框图。
55.图4是本技术示出的一种代码处理装置的结构框图。
56.图5是本技术示出的一种电子设备的框图。
57.图6是本技术示出的一种电子设备的框图。
具体实施方式
58.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
59.参照图1,示出了本技术的一种代码处理方法的步骤流程图,应用于电子设备,该方法具体可以包括如下步骤:
60.在步骤s101中,获取符合代码规范性规则的第一样本代码。第一样本代码能够被正常编译。
61.在本技术一个实施例中,符合代码规范性规则的第一样本代码可以是人工搜集的,例如,可以是在人工事先开发的代码中人工搜集符合代码规范性规则的第一样本代码,并在电子设备上设置搜集的第一样本代码。
62.在本技术另一实施例中,可以人工事先在电子设备上制定代码规范性规则,然后电子设备可以自动生成符合代码规范性规则的第一样本代码,其中,电子设备在生成第一样本代码时,电子设备具有代码规范性规则,具体如何在已得到代码规范性规则的情况下生成符合代码规范性规则的第一样本代码,则可以参见当前已经存在的生成方式,本技术对具体的生成方式不做限定。
63.在步骤s102中,生成与第一样本代码对应的、不符合代码规范性规则的第二样本代码。第二样本代码能够被正常编译。对第一样本代码编译得到的可执行文件的执行结果与对第二样本代码编译得到的可执行文件的执行结果相同。
64.在本技术中,生成的第二样本代码虽然与第一样本代码不全相同,但是不同体现在代码规范性规则的方面,其中的实体内容是相同,因此,第二样本代码以及第一样本代码均能够被正常编译。
65.且由于且生成的第二样本代码与第一样本代码之间的实体内容相同,因此,对第二样本代码编译得到的可执行文件的执行结果与对第一样本代码编译得到的可执行文件的执行结果是相同的。
66.在一个情况下,可以生成与第一样本代码对应的、不符合代码规范性规则的多个不同的第二样本代码。如此,第一样本代码与多个不同的第二样本代码形成一对多的关系,从而可以增加之后训练代码规范性修正模型的训练数据,进而可以提高训练出的代码规范性修正模型的泛化程度。
67.在本技术一个实施例中,可以检测第一样本代码中是否包括第一类型的字符串以
及第二类型的字符串,且,第一类型的字符串与第二类型的字符串是否相邻,在第一样本代码中包括第一类型的字符串以及第二类型的字符串,且,第一类型的字符串与第二类型的字符串相邻的情况下,在第一类型的字符串与第二类型的字符串之间添加第三类型的字符串,得到第二样本代码。
68.第一类型的字符串与第二类型的字符串相邻的其中一种理解方式为:第一类型的字符串与第二类型的字符串位于同一行,且,第一类型的字符串与第二类型的字符串之间不存在其他字符串,例如,第一类型的字符串中的最后一个元素与第二类型的字符串中的第一个元素是紧挨着的。
69.在一个例子中,第一类型的字符串可以包括返回值等,第二类型的字符串可以包括函数名等,第三类型的字符串可以包括空格等。
70.例如,假设符合代码规范性规则的第一样本代码为:
[0071][0072]
其中,在第一样本代码中,第一类型的字符串包括返回值“(void)”,第二类型的字符串包括函数名“initialize”,可以在第一类型的字符串返回值“(void)”与第二类型的字符串函数名“initialize”之间添加第三类型的字符串“空格”,得到与第一样本代码对应的、不符合代码规范性规则的第二样本代码:
[0073][0074]
在本技术另一个实施例中,可以检测第一样本代码中是否包括第二类型的字符串以及第二类型的字符串关联的第四类型的字符串,且,第二类型的字符串与第四类型的字符串是否位于同一行,在第一样本代码中包括第二类型的字符串以及第二类型的字符串关联的第四类型的字符串,且,第二类型的字符串与第四类型的字符串位于同一行的情况下,将第二类型的字符串与第四类型的字符串分别设置在不同行,得到第二样本代码。
[0075]
第二类型的字符串与第四类型的字符串之间在内容上存在关联,例如,第二类型的字符串可以包括函数名等,第四类型的字符串可以包括函数名对应的函数体(函数的实现)等。
[0076]
在一个例子中,假设符合代码规范性规则的第一样本代码为为前述例子举例的代码。
[0077]
其中,在第一样本代码中,第二类型的字符串包括函数名“initialize”,第四类型的字符串包括函数名“initialize”对应的函数体:
[0078][0079]
第二类型的字符串函数名“initialize”与第四类型的字符串函数名“initialize”对应的函数体中的第一个元素“{”位于同一行(在本技术中即看作第二类型的字符串函数名“initialize”与第四类型的字符串函数名“initialize”对应的函数体位于同一行),可以将函数名“initialize”对应的函数体中的第一个元素“{”设置在下一行,得到与第一样本代码对应的、不符合代码规范性规则的第二样本代码:
[0080][0081]
在本技术另一个实施例中,可以检测第一样本代码中是否包括第三类型的字符串,在第一样本代码中包括第三类型的字符串的情况下,在第三类型字符串的前侧和/或后侧增加至少一个第三类型的字符串,得到第二样本代码。
[0082]
第三类型的字符串包括空格、分号以及逗号等。
[0083]
在一个例子中,假设符合代码规范性规则的第一样本代码为为前述例子举例的代码。
[0084]
其中,在第一样本代码中,第5行包括第三类型的字符串“;”,可以在第三类型的字符串“;”之后添加多个第三类型的字符串“;”,得到与第一样本代码对应的、不符合代码规范性规则的第二样本代码:
[0085][0086]
在本技术另一个实施例中,可以检测第一样本代码中是否存在上一行的末尾包括第五类型的字符串且相邻的下一行的开头包括至少一个第三类型的字符串的情况,在第一样本代码中存在上一行的末尾包括第五类型的字符串且相邻的下一行的开头包括至少一个第三类型的字符串的情况的情况下,可以删除下一行中的至少一个第三类型的字符串中的至少部分第三类型的字符串,得到第二样本代码。
[0087]
第三类型的字符串包括空格、分号以及逗号等。
[0088]
第五类型的字符串包括用于囊括一个结构体(例如函数体)等的字符串,例如,“{”等。
[0089]
在一个例子中,假设符合代码规范性规则的第一样本代码为为前述例子举例的代码。
[0090]
其中,在第一样本代码中,第1行的末尾为第五类型的字符串“{”,第2行的开头包括多个(例如4个等)第三类型的字符串“空格”,也即,第2行的代码开头存在缩进。
[0091]
可以删除第2行中开头的多个(例如4个等)第三类型的字符串“空格”,以使第2行的代码开头不存在缩进,得到与第一样本代码对应的、不符合代码规范性规则的第二样本代码:
[0092][0093]
在步骤s103中,根据第一样本代码以及第二样本代码对模型训练,直至模型中的参数收敛,从而得到代码规范性修正模型。
[0094]
在训练过程中,可以在模型中输入第二样本代码,以使模型对第二样本代码进行修正处理,得到修正处理后的代码,之后可以借助损失函数,并基于修正处理后的代码与第一样本代码调整模型中的网络参数,直至模型中的网络参数收敛,从而就可以完成训练,得到代码规范性修正模型。
[0095]
在本技术中,在训练得到代码规范性修正模型之后,还可以评估代码规范性修正模型的修正准确率是否符合要求。如果代码规范性修正模型的修正准确率符合要求,则可
以将代码规范性修正模型上线应用,如果代码规范性修正模型的修正准确率不符合要求,则可以继续优化代码规范性修正模型,直至代码规范性修正模型的修正准确率满足要求之后,再将代码规范性修正模型上线应用。
[0096]
例如,可以获取符合代码规范性规则的第一测试代码。第一测试代码能够被正常编译。生成与第一测试代码对应的、不符合代码规范性规则的第二测试代码。第二测试代码能够被正常编译。对第一测试代码编译得到的可执行文件的执行结果与对第二测试代码编译得到的可执行文件的执行结果相同。
[0097]
其中,获取第一测试代码的获取方式可以参见步骤s101中的获取第一样本代码的获取方式,在此不做详述。
[0098]
以及,获取第二测试代码的获取方式可以参见步骤s102中的获取第二样本代码的获取方式,在此不做详述。
[0099]
可以将不符合代码规范性规则的第二测试代码输入代码规范性修正模型,以使代码规范性修正模型对不符合代码规范性规则的第二测试代码修正处理,并输出修正处理后的代码。
[0100]
然后对比第一测试代码与处理后的代码,以得到处理后的代码中是否还存在与第一测试代码不同的地方。
[0101]
如果不存在与第一测试代码不同的地方,则说明代码规范性修正模型可以将不符合代码规范性规则的第二测试代码修正正确,即可将代码规范性修正模型上线使用。
[0102]
或者,如果存在与第一测试代码不同的地方,则说明代码规范性修正模型未将不符合代码规范性规则的第二测试代码修正正确,因此,说明代码规范性修正模型的准确率不满足需求,可以继续对代码规范性修正模型进行优化,直至代码规范性修正模型的准确率满足要求为止,即可将代码规范性修正模型上线使用。
[0103]
在本技术中,获取符合代码规范性规则的第一样本代码。第一样本代码能够被正常编译。生成与第一样本代码对应的、不符合代码规范性规则的第二样本代码。第二样本代码能够被正常编译。对第一样本代码编译得到的可执行文件的执行结果与对第一样本代码编译得到的可执行文件的执行结果相同。根据第一样本代码以及第二样本代码对模型训练,直至模型中的参数收敛,从而得到代码规范性修正模型。
[0104]
如此,之后在需要对不符合代码规范性规则的代码修正时,可以获取不符合代码规范性规则的第一目标代码;第一目标代码能够被正常编译。根据代码规范性修正模型获取与第一目标代码对应的、符合代码规范性规则的第二目标代码;对第一目标代码编译得到的可执行文件的执行结果与对第二目标代码编译得到的可执行文件的执行结果相同。
[0105]
这样,在对不符合代码规范性规则的代码修正的过程可以没有人工的参与,从而可以降低人工成本,其次,通过代码规范性修正模型对不符合代码规范性规则的代码修正可以提高修正的准确性以及完整性等。
[0106]
在将训练得到的代码规范性修正模型部署在线上应用之后,如果电子设备需要检测代码是否符合代码规范性规则,以及如果代码不符合代码规范性规则则对代码修正处理以使修正处理后的代码符合代码规范性规则的情况下,则电子设备可以将代码输入代码规范性修正模型中,以使代码规范性修正模型检测代码是否符合代码规范性规则,以及如果代码不符合代码规范性规则则对代码修正处理,并输出修正处理后的代码,如此,电子设备
就可以得到修正处理后的代码,即为符合代码规范性规则的代码。
[0107]
其中,具体过程可以参见图2所示的实施例。
[0108]
参照图2,示出了本技术的一种代码处理方法的步骤流程图,应用于电子设备,该方法具体可以包括如下步骤:
[0109]
在步骤s201中,获取不符合代码规范性规则的第一目标代码;第一目标代码能够被正常编译。
[0110]
不符合代码规范性规则的第一目标代码可以是开发人员在工作的过程中手动开发出的代码,为了将一个团体开发出的代码统一规范,可以获取团体内的开发人员在工作中开发的代码,并作为第一目标代码。
[0111]
在步骤s202中,根据代码规范性修正模型获取与第一目标代码对应的、符合代码规范性规则的第二目标代码;对第一目标代码编译得到的可执行文件的执行结果与对第二目标代码编译得到的可执行文件的执行结果相同。
[0112]
其中,代码规范性修正模型是根据第一样本代码以及第二样本代码对模型训练,直至模型中的参数收敛而得到的;第一样本代码包括符合代码规范性规则的代码,第二样本代码包括生成的与第一样本代码对应的、不符合代码规范性规则的样本代码;第一样本代码能够被正常编译;第二样本代码能够被正常编译;对第一样本代码编译得到的可执行文件的执行结果与对第二样本代码编译得到的可执行文件的执行结果相同。
[0113]
代码规范性修正模型的具体训练方式可以参见图1所示的实施例,在此不做详述。
[0114]
在本技术中,可以将第一目标代码输出代码规范性修正模型中,以使代码规范性修正模型对第一目标代码进行修正处理,得到符合代码规范性规则的第二目标代码。
[0115]
进一步地,可以使用符合代码规范性规则的第二目标代码替换不符合代码规范性规则的第一目标代码,之后不再使用不符合代码规范性规则的第一目标代码,而可以使用符合代码规范性规则的第二目标代码。
[0116]
进一步地,可以输出提示信息,以告知开发人员对不符合代码规范性规则的第一目标代码的哪些地方修正而得到符合代码规范性规则的第二目标代码。
[0117]
通过本技术,在需要对不符合代码规范性规则的代码修正时,可以获取不符合代码规范性规则的第一目标代码;第一目标代码能够被正常编译。根据代码规范性修正模型获取与第一目标代码对应的、符合代码规范性规则的第二目标代码;对第一目标代码编译得到的可执行文件的执行结果与对第二目标代码编译得到的可执行文件的执行结果相同。
[0118]
这样,在对不符合代码规范性规则的代码修正的过程可以没有人工的参与,从而可以降低人工成本,其次,通过代码规范性修正模型对不符合代码规范性规则的代码修正可以提高修正的准确性以及完整性等。
[0119]
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作并不一定是本技术所必须的。
[0120]
参照图3,示出了本技术的一种代码处理装置的结构框图,应用于电子设备,该装置具体可以包括如下模块:
[0121]
第一获取模块11,用于获取符合代码规范性规则的第一样本代码;所述第一样本
代码能够被正常编译;
[0122]
生成模块12,用于生成与所述第一样本代码对应的、不符合代码规范性规则的第二样本代码;所述第二样本代码能够被正常编译;对所述第一样本代码编译得到的可执行文件的执行结果与对所述第二样本代码编译得到的可执行文件的执行结果相同;
[0123]
训练模块13,用于根据所述第一样本代码以及第二样本代码对模型训练,直至模型中的参数收敛,从而得到代码规范性修正模型。
[0124]
在一个可选的实现方式中,所述生成模块具体用于:
[0125]
在所述第一样本代码中包括第一类型的字符串以及第二类型的字符串,且,所述第一类型的字符串与所述第二类型的字符串相邻的情况下,在所述第一类型的字符串与所述第二类型的字符串之间添加第三类型的字符串,得到所述第二样本代码。
[0126]
在一个可选的实现方式中,所述生成模块具体用于:
[0127]
在所述第一样本代码中包括第二类型的字符串以及所述第二类型的字符串关联的第四类型的字符串,且,所述第二类型的字符串与所述第四类型的字符串位于同一行的情况下,将所述第二类型的字符串与所述第四类型的字符串分别设置在不同行,得到所述第二样本代码。
[0128]
在一个可选的实现方式中,所述生成模块具体用于:
[0129]
在所述第一样本代码中包括第三类型的字符串的情况下,在所述第三类型的字符串的前侧和/或后侧增加至少一个第三类型的字符串,得到所述第二样本代码。
[0130]
在一个可选的实现方式中,所述生成模块具体用于:
[0131]
在所述第一样本代码中存在上一行的末尾包括第五类型的字符串且相邻的下一行的开头包括至少一个第三类型的字符串的情况的情况下,删除所述下一行中的所述至少一个第三类型的字符串中的至少部分第三类型的字符串,得到所述第二样本代码。
[0132]
在本技术中,获取符合代码规范性规则的第一样本代码。第一样本代码能够被正常编译。生成与第一样本代码对应的、不符合代码规范性规则的第二样本代码。第二样本代码能够被正常编译。对第一样本代码编译得到的可执行文件的执行结果与对第一样本代码编译得到的可执行文件的执行结果相同。根据第一样本代码以及第二样本代码对模型训练,直至模型中的参数收敛,从而得到代码规范性修正模型。
[0133]
如此,之后在需要对不符合代码规范性规则的代码修正时,可以获取不符合代码规范性规则的第一目标代码;第一目标代码能够被正常编译。根据代码规范性修正模型获取与第一目标代码对应的、符合代码规范性规则的第二目标代码;对第一目标代码编译得到的可执行文件的执行结果与对第二目标代码编译得到的可执行文件的执行结果相同。
[0134]
这样,在对不符合代码规范性规则的代码修正的过程可以没有人工的参与,从而可以降低人工成本,其次,通过代码规范性修正模型对不符合代码规范性规则的代码修正可以提高修正的准确性以及完整性等。
[0135]
参照图4,示出了本技术的一种代码处理装置的结构框图,应用于电子设备,该装置具体可以包括如下模块:
[0136]
第二获取模块21,用于获取不符合代码规范性规则的第一目标代码;所述第一样本代码能够被正常编译;
[0137]
第三获取模块22,用于根据代码规范性修正模型获取与所述第一目标代码对应
的、符合代码规范性规则的第二目标代码;所述第一目标代码的执行结果与所述第二目标代码的执行结果相同;
[0138]
其中,所述代码规范性修正模型是根据第一样本代码以及第二样本代码对模型训练,直至模型中的参数收敛而得到的;所述第一样本代码包括符合代码规范性规则的代码,所述第二样本代码包括生成的与所述第一样本代码对应的、不符合代码规范性规则的样本代码;所述第一样本代码能够被正常编译;所述第二样本代码能够被正常编译;所述第一样本代码的执行结果与所述第二样本代码的执行结果相同。
[0139]
通过本技术,在需要对不符合代码规范性规则的代码修正时,可以获取不符合代码规范性规则的第一目标代码;第一目标代码能够被正常编译。根据代码规范性修正模型获取与第一目标代码对应的、符合代码规范性规则的第二目标代码;对第一目标代码编译得到的可执行文件的执行结果与对第二目标代码编译得到的可执行文件的执行结果相同。
[0140]
这样,在对不符合代码规范性规则的代码修正的过程可以没有人工的参与,从而可以降低人工成本,其次,通过代码规范性修正模型对不符合代码规范性规则的代码修正可以提高修正的准确性以及完整性等。
[0141]
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0142]
可选的,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述代码处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0143]
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述代码处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等。
[0144]
图5是本技术示出的一种电子设备800的框图。例如,电子设备800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
[0145]
参照图5,电子设备800可以包括以下一个或多个组件:处理组件802,存储器804,电力组件806,多媒体组件808,音频组件810,输入/输出(i/o)的接口812,传感器组件814,以及通信组件816。
[0146]
处理组件802通常控制电子设备800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
[0147]
存储器804被配置为存储各种类型的数据以支持在设备800的操作。这些数据的示例包括用于在电子设备800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图像,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除
可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
[0148]
电源组件806为电子设备800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为电子设备800生成、管理和分配电力相关联的组件。
[0149]
多媒体组件808包括在所述电子设备800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
[0150]
音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(mic),当电子设备800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收到的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
[0151]
i/o接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
[0152]
传感器组件814包括一个或多个传感器,用于为电子设备800提供各个方面的状态评估。例如,传感器组件814可以检测到设备800的打开/关闭状态,组件的相对定位,例如所述组件为电子设备800的显示器和小键盘,传感器组件814还可以检测电子设备800或电子设备800一个组件的位置改变,用户与电子设备800接触的存在或不存在,电子设备800方位或加速/减速和电子设备800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
[0153]
通信组件816被配置为便于电子设备800和其他设备之间有线或无线方式的通信。电子设备800可以接入基于通信标准的无线网络,如wifi,运营商网络(如2g、3g、4g或5g),或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播操作信息。在一个示例性实施例中,所述通信组件816还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
[0154]
在示例性实施例中,电子设备800可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
[0155]
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由电子设备800的处理器820执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软
盘和光数据存储设备等。
[0156]
图6是本技术示出的一种电子设备1900的框图。例如,电子设备1900可以被提供为一服务器。
[0157]
参照图6,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
[0158]
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出(i/o)接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如windows servertm,mac os xtm,unixtm,linuxtm,freebsdtm或类似。
[0159]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0160]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0161]
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
[0162]
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0163]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0164]
在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0165]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0166]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0167]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0168]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1