一种代码审查方法、装置、终端设备及存储介质与流程

未命名 10-19 阅读:93 评论:0


1.本技术属于计算机技术领域,尤其涉及一种代码审查方法、装置、终端设备及存储介质。


背景技术:

2.代码的质量直接影响软件质量,代码审查不仅能够及时发现后期测试中难以发现的问题,还可以帮助团队成员提高编程技能,统一编码风格,从而提高代码质量及代码可维护性,保证软件质量。代码审查的内容包括但不限于:代码的注释、命名、逻辑规范、类设计等方面。
3.现有的代码审查方法通常是直接将待审查代码输入至各类代码审查工具进行处理,得到待审查代码对应的审查结果,考虑不够全面,降低了对代码的审查准确率。


技术实现要素:

4.本技术实施例提供了一种代码审查方法、装置、终端设备及存储介质,提高了代码审查的准确率。
5.第一方面,本技术实施例提供了一种代码审查方法,包括:
6.获取待审查代码;
7.根据所述待审查代码和设定的审查策略,生成所述待审查代码对应的审查提示语;所述审查提示语用于表征所述待审查代码的审查目的;
8.根据所述审查提示语,对所述待审查代码进行代码审查处理,得到所述待审查代码的审查结果。
9.可选的,所述根据所述审查提示语,对所述待审查代码进行代码审查处理,得到所述待审查代码的审查结果,包括:
10.将所述待审查代码和所述审查提示语输入至已训练的语言模型进行代码审查处理,得到所述待审查代码的审查结果;其中,所述语言模型的为基于样本数据集对预先构建的神经网络模型进行训练得到;所述样本数据集包括多个样本代码、所述多个样本代码各自对应的样本提示语和样本审查结果;所述神经网络模型的网络结构为transformer结构。
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.图1是本技术一实施例提供的代码审查方法的实现流程图;
37.图2是本技术另一实施例提供的代码审查方法的实现流程图;
38.图3是本技术再一实施例提供的代码审查方法的实现流程图;
39.图4是本技术又一实施例提供的代码审查方法的实现流程图;
40.图5是本技术一实施例提供的代码审查装置的结构示意图;
41.图6是本技术一实施例提供的终端设备的结构示意图。
具体实施方式
42.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。
43.应当理解,当在本技术说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
44.还应当理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
45.如在本技术说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0046]
另外,在本技术说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0047]
在本技术说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
[0048]
请参阅图1,图1是本技术一实施例提供的一种代码审查方法的实现流程图。本技术实施例中,该代码审查方法的执行主体为终端设备。
[0049]
如图1所示,本技术一实施例提供的代码审查方法可以包括s101~s103,详述如下:
[0050]
在s101中,获取待审查代码。
[0051]
在实际应用中,当用户需要进行代码审查时,可以向终端设备发送代码审查请求。
[0052]
本技术实施例中,终端设备检测到代码审查请求可以是:检测到针对终端设备的
预设操作。其中,预设操作可以根据实际需要设置,此处不作限制。示例性的,预设操作可以是点击终端设备上的预设控件,即终端设备若检测到用户点击终端设备上的预设控件,则认为检测到了针对终端设备的预设操作,即检测到了代码审查请求;当然,该预设操作也可以是一个时间触发操作,终端设备在运行时可以配置有相应的操作流程,该操作流程包含有多个关键事件的触发节点,上述关键事件包括代码审查事件,在该情况下,若终端设备检测到到达代码审查事件关联的触发节点,则执行s101~s103的操作,以执行代码审查操作。
[0053]
终端设备在检测到代码审查请求后,可以获取待审查代码。
[0054]
在本技术实施例的一种实现方式中,终端设备可以从代码仓库中获取到待审查代码。
[0055]
其中,代码仓库中存储有大量文件,每份文件均用于存储代码。
[0056]
本实施例中,终端设备可以从代码仓库中获取到合并记录,并根据该合并记录获取待审查代码。其中,合并记录指代码审查记录。
[0057]
需要说明的是,待审查代码可以是各种格式的文件,如文件后缀为a.png、b.php、c.html或者d.go的文件。
[0058]
待审查代码可以包括多份文件。
[0059]
在s102中,根据所述待审查代码和设定的审查策略,生成所述待审查代码对应的审查提示语;所述审查提示语用于表征所述待审查代码的审查目的。
[0060]
需要说明的是,终端设备预先存储有多个设定的审查策略。其中,设定的审查策略可以根据实际需要确定,此处不作限制。
[0061]
示例性的,设定的审查策略包括但不限于:检测代码内容是否存在语法错误的策略、检测代码内容是否存在内存泄露风险的策略以及检测代码内容是否存在性能优化空间的策略等。
[0062]
基于此,本技术实施例中,终端设备在获取到待审查代码后,可以根据该待审查代码和预先存储的设定的审查策略,生成该待审查代码对应的审查提示语。其中,审查提示语用于表征待审查代码的审查目的。
[0063]
需要说明的是,上述审查提示语可以是一条,也可以是多条。
[0064]
在本技术的一个实施例中,终端设备在得到待审查代码后,可以对该待审查代码进行语义分析,并根据语义分析的结果确定其对应的审查策略,之后,可以根据该待审查代码和确定的审查策略,生成该待审查代码对应的审查提示语。
[0065]
在本技术的另一个实施例中,终端设备具体可以根据以下步骤生成审查提示语,详述如下:
[0066]
确定所述待审查代码的文件格式;
[0067]
对所述文件格式和所述审查策略进行拼接,得到所述审查提示语。
[0068]
本实施例中,结合s101,由于待审查代码以文件形式存储,因此,终端设备可以确定待审查代码所在文件的文件格式,并将该文件格式和审查策略进行拼接,从而得到审查提示语。
[0069]
示例性的,假设待审查代码的文件格式为xxx.php,审查策略为检测代码内容是否存在内存泄露风险的策略,则审查提示语为:检测xxx.php代码内容是否存在内存泄露风险。
[0070]
在s103中,根据所述审查提示语,对所述待审查代码进行代码审查处理,得到所述待审查代码的审查结果。
[0071]
本技术实施例中,终端设备在确定待审查代码的审查提示语后,可以将该审查提示语和待审查代码同时输入至代码审查工具进行代码审查处理,以得到该待审查代码的审查结果。
[0072]
需要说明的是,上述代码审查工具包括但不限于:codestriker、rhodecode、codebrag、phabricator或codifferous等。
[0073]
本技术实施例中,待审查代码的审查结果包括但不限于:待审查代码存在的问题、产生该问题的原因以及存在该问题的代码内容。
[0074]
示例性的,以待审查代码存在内存泄露的风险,则其审查结果包括以下内容:
[0075]
存在的问题:该待审查代码存在内存泄露的风险。
[0076]
产生该问题的原因:原因在于在computedepth方法中,循环执行了compute方法,而compute方法中存在递归的调用,导致每次调用都会开辟新的内存空间,占用内存。在循环执行完后,有没有及时对变量进行释放,占用的内存空间依然存在。
[0077]
存在该问题的代码内容:
[0078]
foreach(sres as skey=》$value){
[0079]
sarr2=array():
[0080]
si=1;
[0081]
stmp=skey;
[0082]
$flag=true;
[0083]
while($flag){
[0084]
$this-》compute($info,$tmp,$arr2,$flag);
[0085]
}
[0086]
在本技术的一个实施例中,为了提高对待审查代码的审查效率和审查准确率,终端设备可以将待审查代码和审查提示语输入至已训练的语言模型进行代码审查处理,得到待审查代码的审查结果。其中,语言模型的为基于样本数据集对预先构建的神经网络模型进行训练得到;样本数据集包括样本数据集包括多个样本代码、多个样本代码各自对应的样本提示语和样本审查结果。
[0087]
本实施例中,预先构建的神经网络模型可以是现有的chatgpt。
[0088]
在实际应用中,chatgpt采用的是多层堆叠的神经网络结构,每一层网络都是由多个神经元组成的。输入的文本序列通过一系列的网络层进行处理和变换,最终得到模型的输出结果。其中,chatgpt采用的神经网络结构为transformer结构。该transformer结构设置有自注意力机制。
[0089]
在chatgpt中,自注意力机制的实现是通过对输入文本序列进行矩阵乘法和softmax激活函数操作实现的。对于每一个位置,chatgpt计算其与其他位置之间的相似度,并且根据相似度的权重对序列进行加权平均。这样,在不同的网络层中,chatgpt可以学习到序列中的不同关系,比如词之间的关系、句子之间的关系等。
[0090]
需要说明的是,对上述chatgpt的训练过程包括预训练和微调两个阶段。在预训练阶段,chatgpt使用大量的文本语料(预设数据集中的样本代码)进行无监督学习,学习文本
序列中的语言规律和语义关系。在微调阶段,chatgpt使用少量的有标注数据(如包含样本提示语和样本审查结果的样本代码)进行监督学习,以优化模型参数。
[0091]
基于此,本实施例中,终端设备在对预先构建的神经网络模型进行训练时,可以将样本数据集输入至该神经网络模型进行预训练和微调,以得到已训练的语义模型。
[0092]
需要说明的是,由于语言模型存在限制条件,即无法同时处理数量大于或等于第一阈值的审查提示语,因此,在本技术的另一个实施例中,为了避免语言模型由于同时处理过量审查提示语造成的模型拥堵,导致的审查效率低下,终端设备可以通过如图3所示的步骤s201~s202得到待审查代码的审查结果,详述如下:
[0093]
在s201中,遍历所有所述审查提示语,每次将数量小于第一阈值的所述审查提示语和所述待审查代码输入至所述语言模型进行代码审查处理,得到一个审查批次的审查结果。
[0094]
在s202中,将所有审查批次的审查结果叠加,得到所述待审查代码的审查结果。
[0095]
本实施例中,为了避免语言模型由于同时处理过量审查提示语造成的模型拥堵,以提高对待审查代码的审查效率,当审查提示语为多条时,终端设备可以每次将数量小于第一阈值的审查提示语和待审查代码输入至语言模型进行代码审查处理,得到由该次下数量小于第一阈值的审查提示语构成的审查批次的审查结果,基于此,终端设备可以得到所有审查批次的审查结果。其中,第一阈值可以根据实际需要确定,此处不作限制。
[0096]
之后,终端设备可以将所有审查批次的审查结果进行叠加,即将所有审查批次的审查结果合并在一起,以得到待审查代码的审查结果。
[0097]
在本技术的再一个实施例中,代码审查工具(如语言模型)存在限制条件,即当待审查代码的审查提示语的长度过长时,代码审查工具无法对该待审查代码进行代码审查处理,因此,当待审查代码的审查提示语为多条时,为了提高对待审查代码的审查成功率,终端设备具体可以通过如图3所示的步骤s301~s302对待审查代码进行代码审查处理,详述如下:
[0098]
在s301中,检测多条所述审查提示语的总长度。
[0099]
本实施例中,终端设备在得到待审查代码的审查提示语后,可以统计多条待审查代码的审查提示语的总长度,并将该总长度与第二阈值进行比较。其中,第二阈值可以根据实际需要确定,此处不作限制。
[0100]
在本技术的一个实施例中,终端设备在检测到上述审查提示语的总长度大于或等于第二阈值时,说明待审查代码的审查提示语过长,因此,为了降低代码审查工具的使用成本,终端设备可以停止对待审查代码的代码审查处理。
[0101]
在本技术的另一个实施例中,终端设备在检测到上述审查提示语的总长度小于第二阈值时,可以执行步骤s302。
[0102]
在s302中,若所述总长度小于第二阈值,则根据所述审查提示语,对所述待审查代码进行代码审查处理。
[0103]
本实施例中,终端设备在检测到上述审查提示语的总长度小于第二阈值时,说明待审查代码的审查提示语的总长度较短,即代码审查工具可以对待审查代码进行代码审查处理,因此,终端设备可以根据待审查代码的多条审查提示语,对该待审查代码进行代码审查处理。
[0104]
在本技术的一个实施例中,代码审查工具(如语言模型)存在限制条件,即当待审查代码的某条审查提示语的长度过长时,代码审查工具无法根据该条审查提示语对该待审查代码进行代码审查处理,因此,为了进一步提高代码的审查成功率,终端设备在检测到待审查代码的多条审查提示语的总长度小于第二阈值后,且在根据审查提示语,对待审查代码进行代码审查处理之前,还可以执行如图4所示的步骤s401~s402,详述如下:
[0105]
在s401中,分别检测每条所述审查提示语的长度。
[0106]
本实施例中,终端设备在检测到待审查代码的审查提示语的总长度小于第二阈值后,可以检测待审查代码的每条审查提示语的长度,并将每条审查提示语的长度与第三阈值进行比较。其中,第三阈值可以根据实际需要确定,此处不作限制。
[0107]
在本技术的一个实施例中,终端设备在检测到每条审查提示语的长度均小于或等于第三阈值时,说明每条审查提示语的长度都符合要求,即终端设备无需对审查提示语进行处理,因此,终端设备可以根据每条审查提示语,对待审查代码进行代码审查处理。
[0108]
在本技术的另一个实施例中,终端设备在检测到多条审查提示语中存在长度大于第三阈值的第一审查提示语时,可以执行步骤s402。
[0109]
在s402中,若多条所述审查提示语中存在长度大于第三阈值的第一审查提示语,则将所述第一审查提示语切割成为至少二个第二审查提示语,且每个所述第二审查提示语的长度小于或等于所述第三阈值。
[0110]
本实施例中,终端设备在检测到多条审查提示语中存在长度大于第三阈值的第一审查提示语时,说明该第一审查提示语的长度过长,因此,为了提高对待审查代码的审查成功率,终端设备可以将该第一审查提示语切割成为至少二个第二审查提示语,即将该第一审查提示语切割成更小粒度的第二审查提示语。需要说明的是,每个第二审查提示语的长度均小于或等于第三阈值。
[0111]
基于此,终端设备可以在使用第一审查提示语对待审查代码进行代码审查处理时,可以使用上述多个第二审查提示语对待审查代码进行代码审查处理。
[0112]
以上可以看出,本技术实施例提供的一种代码审查方法,通过获取待审查代码;根据待审查代码和设定的审查策略,生成待审查代码对应的审查提示语;审查提示语用于表征待审查代码的审查目的;根据审查提示语,对待审查代码进行代码审查处理,得到待审查代码的审查结果。与现有技术直接将待审查代码输入至现有的代码审查工具进行处理相比,本技术的方法需要结合待审查代码和设定审查策略,生成待审查代码对应的审查提示语,之后再根据该审查提示语对待审查代码进行针对性的审查,从而提高了代码审查的准确率。
[0113]
在本技术的一个实施例中,终端设备在得到待审查代码的审查结果后,可以根据该待审查代码的审查结果对代码仓库中的合并记录进行更新,同时输出用于提示用户该待审查代码已审查完毕的提示信息,以便用户进行后续操作。
[0114]
在本技术的另一个实施例中,为了进一步提高待审查代码的审查准确率,终端设备在得到待审查代码的审查结果后,可以执行以下步骤,详述如下:
[0115]
接收用户输入的对所述待审查代码的审查结果的核对信息;
[0116]
根据所述核对信息,对所述待审查代码的审查结果进行调整。
[0117]
本实施例中,终端设备在得到待审查代码的审查结果后,可以在显示屏幕上显示
该审查结果。
[0118]
基于此,用户可以在上述显示屏幕上查阅上述审查结果,并在该显示屏幕上输入对该审查结果的核对信息。其中,核对信息包括但不限于核对结果和核对问题。核对结果包括核对通过和核对不通过。
[0119]
本实施例中,终端设备可以接收用户输入的对待审查代码的审查结果的核对信息,并根据该核对信息对待审查代码的审查结果进行调整。
[0120]
具体地,当核对信息为核对通过时,终端设备无需对待审查代码的审查结果进行调整;当核对信息为核对不通过时,终端设备可以根据核对问题对嗲审查代码的审查结果进行调整,或者,根据待审查代码的审查提示语,对待审查代码重新进行代码审查处理,已得到更新后的待审查代码的审查结果,即完成对待审查代码的审查结果的调整。
[0121]
在本技术的再一个实施例中,终端设备在对待审查代码的审查结果进行调整后,可以根据调整后的待审查代码对待审查代码的具体内容进行调整。
[0122]
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0123]
对应于上文实施例所述的一种代码审查方法,图5示出了本技术实施例提供的一种代码审查装置的结构示意图,为了便于说明,仅示出了与本技术实施例相关的部分。参照图5,该代码审查装置500包括:获取单元51、生成单元52及第一处理单元53。其中:
[0124]
获取单元51用于获取待审查代码。
[0125]
生成单元52用于根据所述待审查代码和设定的审查策略,生成所述待审查代码对应的审查提示语;所述审查提示语用于表征所述待审查代码的审查目的。
[0126]
第一处理单元53用于根据所述审查提示语,对所述待审查代码进行代码审查处理,得到所述待审查代码的审查结果。
[0127]
在本技术的一个实施例中,第一计处理单元53具体包括:第二处理单元。
[0128]
第二处理单元用于将所述待审查代码和所述审查提示语输入至已训练的语言模型进行代码审查处理,得到所述待审查代码的审查结果;其中,所述语言模型的为基于样本数据集对预先构建的神经网络模型进行训练得到;所述样本数据集包括多个样本代码、所述多个样本代码各自对应的样本提示语和样本审查结果;所述神经网络模型的网络结构为transformer结构。
[0129]
在本技术的一个实施例中,所述审查提示语包括多条;所述第二处理单元具体包括:输入单元和叠加单元。其中:
[0130]
输入单元用于遍历所有所述审查提示语,每次将数量小于第一阈值的所述审查提示语和所述待审查代码输入至所述语言模型进行代码审查处理,得到一个审查批次的审查结果。
[0131]
叠加单元用于将所有审查批次的审查结果叠加,得到所述待审查代码的审查结果。
[0132]
在本技术的一个实施例中,生成单元52具体包括:确定单元和拼接单元。
[0133]
其中:
[0134]
确定单元用于确定所述待审查代码的文件格式。
[0135]
拼接单元用于对所述文件格式和所述审查策略进行拼接,得到所述审查提示语。
[0136]
在本技术的一个实施例中,所述审查提示语包括多条;第一处理单元53具体包括:第一检测单元和第三处理单元。其中:
[0137]
第一检测单元用于检测多条所述审查提示语的总长度。
[0138]
第三处理单元用于若所述总长度小于第二阈值,则根据所述审查提示语,对所述待审查代码进行代码审查处理。
[0139]
在本技术的一个实施例中,代码审查装置500还包括:第二检测单元和切割单元。其中:
[0140]
第二检测单元用于分别检测每条所述审查提示语的长度。
[0141]
切割单元用于若多条所述审查提示语中存在长度大于第三阈值的第一审查提示语,则将所述第一审查提示语切割成为至少二个第二审查提示语,且每个所述第二审查提示语的长度小于或等于所述第三阈值。
[0142]
在本技术的一个实施例中,代码审查装置500还包括:接收单元和调整单元。其中:
[0143]
接收单元用于接收用户输入的对所述待审查代码的审查结果的核对信息。
[0144]
调整单元用于根据所述核对信息,对所述待审查代码的审查结果进行调整。
[0145]
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本技术方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
[0146]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0147]
图6为本技术一实施例提供的终端设备的结构示意图。如图6所示,该实施例的终端设备6包括:至少一个处理器60(图6中仅示出一个)处理器、存储器61以及存储在所述存储器61中并可在所述至少一个处理器60上运行的计算机程序62,所述处理器60执行所述计算机程序62时实现上述任意各个代码审查方法实施例中的步骤。
[0148]
该终端设备可包括,但不仅限于,处理器60、存储器61。本领域技术人员可以理解,图6仅仅是终端设备6的举例,并不构成对终端设备6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
[0149]
所称处理器60可以是中央处理单元(central processing unit,cpu),该处理器60还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器
等。
[0150]
所述存储器61在一些实施例中可以是所述终端设备6的内部存储单元,例如终端设备6的内存。所述存储器61在另一些实施例中也可以是所述终端设备6的外部存储设备,例如所述终端设备6上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,所述存储器61还可以既包括所述终端设备6的内部存储单元也包括外部存储设备。所述存储器61用于存储操作系统、应用程序、引导装载程序(bootloader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
[0151]
本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
[0152]
本技术实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行时实现可实现上述各个方法实施例中的步骤。
[0153]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质。例如u盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
[0154]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0155]
以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。

技术特征:
1.一种代码审查方法,其特征在于,包括:获取待审查代码;根据所述待审查代码和设定的审查策略,生成所述待审查代码对应的审查提示语;所述审查提示语用于表征所述待审查代码的审查目的;根据所述审查提示语,对所述待审查代码进行代码审查处理,得到所述待审查代码的审查结果。2.如权利要求1所述的代码审查方法,其特征在于,所述根据所述审查提示语,对所述待审查代码进行代码审查处理,得到所述待审查代码的审查结果,包括:将所述待审查代码和所述审查提示语输入至已训练的语言模型进行代码审查处理,得到所述待审查代码的审查结果;其中,所述语言模型的为基于样本数据集对预先构建的神经网络模型进行训练得到;所述样本数据集包括多个样本代码、所述多个样本代码各自对应的样本提示语和样本审查结果;所述神经网络模型的网络结构为transformer结构。3.如权利要求2所述的代码审查方法,其特征在于,所述审查提示语包括多条;所述将所述待审查代码和所述审查提示语输入至已训练的语言模型进行代码审查处理,得到所述待审查代码的审查结果,包括:遍历所有所述审查提示语,每次将数量小于第一阈值的所述审查提示语和所述待审查代码输入至所述语言模型进行代码审查处理,得到一个审查批次的审查结果;将所有审查批次的审查结果叠加,得到所述待审查代码的审查结果。4.如权利要求1所述的代码审查方法,其特征在于,所述根据所述待审查代码和设定的审查策略,生成所述待审查代码对应的审查提示语,包括:确定所述待审查代码的文件格式;对所述文件格式和所述审查策略进行拼接,得到所述审查提示语。5.如权利要求1所述的代码审查方法,其特征在于,所述审查提示语包括多条;所述根据所述审查提示语,对所述待审查代码进行代码审查处理,包括:检测多条所述审查提示语的总长度;若所述总长度小于第二阈值,则根据所述审查提示语,对所述待审查代码进行代码审查处理。6.如权利要求5所述的代码审查方法,其特征在于,若所述总长度小于第二阈值,在所述根据所述审查提示语,对所述待审查代码进行代码审查处理之前,还包括:分别检测每条所述审查提示语的长度;若多条所述审查提示语中存在长度大于第三阈值的第一审查提示语,则将所述第一审查提示语切割成为至少二个第二审查提示语,且每个所述第二审查提示语的长度小于或等于所述第三阈值。7.如权利要求1-6任一项所述的代码审查方法,其特征在于,在所述根据所述审查提示语,对所述待审查代码进行代码审查处理,得到所述待审查代码的审查结果之后,还包括:接收用户输入的对所述待审查代码的审查结果的核对信息;根据所述核对信息,对所述待审查代码的审查结果进行调整。8.一种代码审查装置,其特征在于,包括:获取单元,用于获取待审查代码;
生成单元,用于根据所述待审查代码和设定的审查策略,生成所述待审查代码对应的审查提示语;所述审查提示语用于表征所述待审查代码的审查目的;第一处理单元,用于根据所述审查提示语,对所述待审查代码进行代码审查处理,得到所述待审查代码的审查结果。9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的代码审查方法。10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的代码审查方法。

技术总结
本申请适用于计算机技术领域,提供了一种代码审查方法、装置、终端设备及存储介质,所述方法包括:获取待审查代码;根据待审查代码和设定的审查策略,生成待审查代码对应的审查提示语;审查提示语用于表征待审查代码的审查目的;根据审查提示语,对待审查代码进行代码审查处理,得到待审查代码的审查结果。与现有技术直接将待审查代码输入至现有的代码审查工具进行处理相比,本申请的方法需要结合待审查代码和设定审查策略,生成待审查代码对应的审查提示语,之后再根据该审查提示语对待审查代码进行针对性的审查,从而提高了代码审查的准确率。确率。确率。


技术研发人员:何湛彬
受保护的技术使用者:深圳派氪司科技有限公司
技术研发日:2023.06.30
技术公布日:2023/10/15
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐