掌桥专利:专业的专利平台
掌桥专利
首页

代码检测方法及设备

文献发布时间:2024-04-18 19:58:53


代码检测方法及设备

技术领域

本公开实施例涉及文本处理技术领域,尤其涉及一种代码检测方法及设备。

背景技术

随着计算机技术的迅速发展,人们对计算机软件(后续简称为软件)的使用越来越多。例如,软件可以是用于提供新闻咨询的应用程序,或用于进行信息查询的网页。软件代码通常可以存储在代码库中,在发布软件代码之前,还需要对软件代码进行代码检测,以获取到目标代码块。

现有技术中,可以通过人工检测的方式确定是否出现目标代码块。例如,人工输入关键词,以检索每个代码文件中是否存在该关键词,并将存在该关键词的代码信息确定为目标代码块,并记录该目标代码块。

可以看出,上述方式具有准确度低的问题。

发明内容

本公开实施例提供一种代码检测方法及设备,可以提高检测准确度。

第一方面,本公开实施例提供一种代码检测方法,所述方法包括:

将预设关键词与预设代码进行匹配,得到候选代码块和所述候选代码块的分类特征信息,所述候选代码块包括:所述预设关键词所在的目标代码行、所述目标代码行之前的代码行和所述目标代码行之后的代码行,所述分类特征信息包括以下至少一项:所述候选代码块所属的代码文件类型、所述候选代码块所属的代码库信息、所述候选代码块是否为注释的指示信息;

将所述候选代码块和对应的分类特征信息输入到已训练的深度学习模型中,得到所述候选代码块为目标代码块的概率;

根据所述概率确定所述候选代码块是否为目标代码块。

第二方面,本公开实施例提供一种代码检测装置,所述装置包括:

代码匹配模块,用于将预设关键词与预设代码进行匹配,得到候选代码块和所述候选代码块的分类特征信息,所述候选代码块包括:所述预设关键词所在的目标代码行、所述目标代码行之前的代码行和所述目标代码行之后的代码行,所述分类特征信息包括以下至少一项:所述候选代码块所属的代码文件类型、所述候选代码块所属的代码库信息、所述候选代码块是否为注释的指示信息;

概率预测模块,用于将所述候选代码块和对应的分类特征信息输入到已训练的深度学习模型中,得到所述候选代码块为目标代码块的概率;

代码块确定模块,用于根据所述概率确定所述候选代码块是否为目标代码块。

第三方面,本公开实施例提供一种电子设备,包括:至少一个处理器和存储器;

所述存储器存储计算机执行指令;

所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述电子设备实现如第一方面所述的方法。

第四方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,使计算设备实现如第一方面所述的方法。

第五方面,本公开实施例提供一种计算机程序,所述计算机程序用于实现如第一方面所述的方法。

本公开实施例提供了一种代码检测方法及设备,该方法包括:将预设关键词与预设代码进行匹配,得到候选代码块和候选代码块的分类特征信息,候选代码块包括:预设关键词所在的目标代码行、目标代码行之前的代码行和目标代码行之后的代码行,分类特征信息包括以下至少一项:候选代码块所属的代码文件类型、候选代码块所属的代码库信息、候选代码块是否为注释的指示信息;将候选代码块和对应的分类特征信息输入到已训练的深度学习模型中,得到候选代码块为目标代码块的概率;根据概率确定候选代码块是否为目标代码块。本公开实施例可以在预设关键词的基础上,结合候选代码块、分类特征信息以及深度学习模型实现检测,这样实现了多种维度的信息的两种检测方法,有助于保证检测的准确度。其中,第一种检测可以理解为基于预设关键词的检测,第二种检测可以理解为基于候选代码块、分类特征信息和深度学习模型的检测。

附图说明

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本公开实施例提供的一种代码检测方法的场景示意图;

图2是本公开实施例提供的一种代码检测方法的步骤流程图;

图3是本公开实施例提供的深度学习模型的预测过程示意图;

图4是本公开实施例提供的一种代码检测装置的结构框图;

图5是本公开实施例提供的一种电子设备的结构框图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。

如背景技术所述,现有技术存在准确度低的问题。

为了解决上述问题,本公开实施例考虑在预设关键词检测的基础上,再结合深度学习模型实现代码检测。具体地,可以先筛选出来包括预设关键词的候选代码块,然后再通过候选代码块以及分类特征信息以及深度学习模型进一步确定候选代码块是否为目标代码块。这样,可以实现多种信息的两种检测方法,有助于保证检测的准确度。其中,第一种检测可以理解为基于预设关键词的检测,第二种检测可以理解为基于分类特征信息和深度学习模型的检测。

下面以具体地实施例对本公开实施例的技术方案以及本公开的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本公开实施例进行描述。

图1是本公开实施例提供的一种代码检测方法的场景示意图。参照图1所示,本公开实施例的代码检测方法涉及以下内容:预设关键词库、预设代码库和深度学习模型。

其中,预设关键词库用于存储预设关键词,预设关键词可以是不符合预设规则的关键词。预设代码库用于存储大量的代码。从而,如果通过匹配确定一代码行中存在这些预设关键词,那么可以确定该代码行可能属于目标代码块。那么可以将存在预设关键词的目标代码行以及前后代码行确定为候选代码块。

上述深度学习模型用于根据候选代码块及分类特征信息预测候选代码块为目标代码块的概率。这样,就可以根据该概率最终确定目标代码块。

需要说明的是,本公开实施例中的预设关键词可以是不符合预设规则的关键词,目标代码块可以是不符合预设规则的代码块。例如,软件代码中的某些代码行中存在不符合规范的词语,这些不符合规范的词语可以为预设关键词,存在这些不符合规范的词语的代码行可以为不符合预设规则的目标代码块。

基于上述图1所示的场景示意图,图2是本公开实施例提供的一种代码检测方法的步骤流程图。参照图2所示,该代码检测方法包括:

S101:将预设关键词与预设代码进行匹配,得到候选代码块和候选代码块的分类特征信息,候选代码块包括:预设关键词所在的目标代码行、目标代码行之前的代码行和目标代码行之后的代码行,分类特征信息包括以下至少一项:候选代码块所属的代码文件类型、候选代码块所属的代码库信息、候选代码块是否为注释的指示信息。

其中,一个候选代码块B1至少可以包括一个目标代码行L1,目标代码行L1是预设关键词库中的至少一个预设关键词所在的代码行,这个代码行是预设代码库中的任意代码行,例如,注释行和实际代码行。

上述目标代码行的确定过程可以包括:将预设代码库中的各代码行逐个与预设关键词库中的各预设关键词匹配,以将包括至少一个预设关键词的代码行确定为目标代码行。具体地,这里的匹配可以有两种方式。

第一种方式,对于预设代码库中的其中一个代码行,将其与预设关键词库中的各个预设关键词进行逐一匹配,如果该代码行中包括至少一个预设关键词,那么确定该代码行为目标代码行。如此,按照该第一种方式,可以确定预设代码库中的各代码行是否为目标代码行。

第二种方式,对于预设关键词库中的其中一个预设关键词,将其与预设代码库中的各个代码行进行逐一匹配,如果该预设关键词存在于任一代码行中,那么将该代码行确定为目标代码行。如此,可以按照第二种方式,确定包括所有预设关键词的其余代码行,作为目标代码行。

在确定上述目标代码行L1之后,如果L1所在的代码文件中还包括L1之前的代码行,那么,还可以将该目标代码行L1之前的若干代码行L2添加到该目标代码行L1所属的候选代码块B1。

在确定上述目标代码行L1之后,如果L1所在的代码文件中还包括L1之后的代码行,那么,还可以将该目标代码行L1之后的若干代码行L3添加到该目标代码行L1所属的候选代码块B1。

综上所述,一个候选代码块B1可以为包括L1的代码块,也可以为包括L1和L2的代码块,还可以使包括:L1和L3的代码块,还可以是包括L1、L2和L3的代码块。

在得到至少一个上述候选代码块之后,还需要确定该候选代码块的上述分类特征信息。

其中,候选代码块所属的代码文件类型可以是用于存储软件代码的任意文件类型,不同编程语言对应不同的代码文件类型。大例如,go文件、python文件、HTML(hypertext markup language,超文本标记语言)文件、xml(extensible markup language,可扩展标记语言)文件、js(java script,java脚本)文件、java文件、c文件等。本公开实施例对代码文件类型不加以限制。例如,如果目标代码行是go文件中的代码行,那么该目标代码行所属的代码文件类型为go文件。

候选代码块所属的代码库信息可以包括代码库类型、代码库标识等。其中,代码库类型与候选代码块的语言类型相关。例如,如果候选代码块所属的代码文件存储于代码库D1中,那么候选代码块所属的代码库信息可以包括D1的类型、D1的代码库标识。

候选代码块是否为注释的指示信息可以为枚举值。例如,当指示信息为0时,表示候选代码块为注释,当指示信息为1时,表示候选代码块不为注释。

本公开实施例中的上述预设规则可以是根据实际应用场景和需求灵活设置的。例如,预设规则可以是对代码的命名规则,从而可以将不符合命名规则的关键词作为预设关键词加入到预设关键词库中。

除通过上述预设关键词匹配得到候选代码块之外,还可以设置至少一个预设规则,从而可以根据该预设规则从预设代码库中筛选出来候选代码块。具体地,将预设代码库中的代码与每个预设规则进行匹配。如果其中一个代码行与至少一个预设规则匹配成功,那么可以将该代码行确定为目标代码行,并将该目标代码行以及前后的代码行确定为候选代码块。如果其中一个代码行与任意预设规则均匹配失败,那么不将该代码行确定为目标代码行,也就不需要将该代码行所在的代码块确定为候选代码块。

当然,相对于预设关键词匹配,上述预设规则匹配的过程的复杂度较高。从而本公开实施例可以通过上述S101的预设关键词匹配过程降低获取候选代码块的复杂度,进而降低代码检测的复杂度。

可以理解的是,S101得到的候选代码块可以理解为初步选取出来的不符合预设规则的代码块。后面还要通过S102从这些候选代码块中进一步选取出最终的目标代码块。

S102:将候选代码块和对应的分类特征信息输入到已训练的深度学习模型中,得到候选代码块为目标代码块的概率。

其中,上述深度学习模型可以用于先对候选代码块和分类特征信息进行向量表示,并通过得到的向量预测候选代码块为目标代码块的概率。从而,参照图3所示,上述深度学习模型中可以包括:第一向量生成子模型、第二向量生成子模型和预测层。其中,第一向量生成子模型可以用于生成候选代码块的语义特征向量,第二向量子模型可以用于通过分类特征信息生成对应的分类特征向量。上述预测可以用于根据第一向量生成子模型输出的向量和第二向量生成子模型生成的向量,预测得到候选代码块为目标代码块的概率。

可以看出,上述深度学习模型的输入包括候选代码块和分类特征信息两种模态的数据,并且分类特征信息中还包括以下多种模态的数据:候选代码块所属的代码文件类型、候选代码块所属的代码库信息、候选代码块是否为注释的指示信息。从而,上述深度学习模型可以理解为对多种模态的数据进行处理的多模态模型。

需要说明的是,上述第一向量生成子模型和第二向量子模型可以相同或不同,第一向量子模型和第二向量子模型可以是用于针对文本生成向量的任意模型,本公开实施例对其不加以限制。

但是,考虑到本公开实施例中的候选代码块是短文本,从而本公开实施例可以选取LSTM(long short-term memory,长短期记忆)模型作为第一向量子模型。由于LSTM是一种时间循环神经网络,LSTM适用于短文本的表示,从而采用LSTM作为第一向量子模型可以有助于提高候选代码块的向量表示准确度,进而提高预测的概率的准确度。

此外,上述第二向量生成子模型可以为全连接模型。全连接模型是神经网络模型中最简单的模型,全连接模型通常包括多个全连接层,每个全连接层其实质就是一个逻辑回归模型,每层包括线性函数与激活函数。最常见的全连接模型的各个全连接层可以分别为输入层、隐藏层和输出层,其中,隐藏层通常是多层结构。

本公开实施例可以通过LSTM提高对候选代码块的向量表示准确度,并通过全连接模型实现简单的预测,从而可以兼顾预测的概率的准确度和深度学习模型的简化。

基于上述第一向量生成子模型、第二向量生成子模型和预测层构成的深度学习模型,确定上述候选代码块为目标代码块的概率的过程可以参照图3所示。具体地,首先,将候选代码块输入到第一向量生成子模型中,得到候选代码块的语义特征向量,以及,将分类特征信息输入到第二向量生成子模型中,得到候选代码块的分类特征向量;然后,将语义特征向量和分类特征向量输入到预测层中,得到候选代码块为目标代码块的概率。

其中,第一向量子模型可以识别候选代码块中的上下文语义,从而可以根据上下文语义生成语义特征向量,语义特征向量可以用于表示候选代码块的语义。

上述第二向量生成子模型可以根据分类特征信息确定其对应的分类特征向量,分类特征向量可以用于表示分类特征信息。

可以看出,本公开实施例可以通过第一向量生成子模型分别对候选代码块进行语义分析得到语义特征向量,以及,通过第二向量生成子模型对分类特征信息进行特征分析得到分类特征向量。在这个阶段,实现了两种维度的信息的分别处理,以提高每种维度的信息对应的向量准确度,有助于保证预测的准确度。之后,再结合语义特征向量和分类特征向量实现预测,可以充分融合多种维度的信息,以进一步提高预测的准确度。

上述深度学习模型需要预先训练得到,也就是离线训练得到。其训练过程可以包括以下多轮迭代,每轮迭代可以包括:

首先,将预设数量的样本代码块和对应的样本分类特征输入到当前深度学习模型中,得到样本代码块为目标代码块的概率,样本代码块对应有样本代码块是否为目标代码块的标签。

然后,根据样本代码块的概率和标签确定损失值。

最后,确定损失值是否满足预设收敛条件。若损失值不满足预设收敛条件,则调整当前深度学习模型的参数,以进行下一轮迭代。若损失值满足预设收敛条件,则结束训练,并将当前深度学习模型确定为训练得到的深度学习模型。

其中,损失值可以通过现有的损失函数确定,损失函数可以例如为:均方和损失函数、交叉熵损失函数等。本公开实施例对损失函数不加以限制。在计算损失值时,可以将本轮迭代使用的预设数量的样本代码块的概率和标签输入到损失函数中,从而可以得到本轮迭代对应的损失值。

损失值要满足的预设收敛条件可以包括但不限于:损失值小于或等于预设损失值阈值、损失值在多轮迭代之后不再继续减小。

需要说明的是,在每轮迭代中,当前深度学习模型是深度学习模型在当前参数下的状态,随着对当前参数的不断调整,也就实现了对深度学习模型的调整。从而,样本代码块为目标代码块的概率是通过以下过程得到的:

首先,将样本代码块输入到当前深度学习模型中的第一向量生成子模型中,得到样本代码块对应的语义特征向量,以及,将样本代码块的分类特征信息输入到当前深度学习模型的第二向量生成子模型中,得到样本代码块的分类特征向量。

然后,将样本代码块的语义特征向量和样本代码块的分类特征向量输入到当前深度学习模型的预测层中,得到样本代码块为目标代码块的概率。

上述在训练过程中确定预测样本代码块为目标代码块的概率的过程与图3所示的过程一致,仅深度学习模型的输入和深度学习模型的参数不同。在进行图3所示的过程时,深度学习模型的参数已经经过训练过程的多次调整,此时,深度学习模型的参数已经是训练好的,不变化的。而在训练过程中预测概率时,深度学习模型的当前参数是当前参数,这个参数需要在训练过程中不断调整的,是变化的。从而,可以将图3中的候选代码块替换为样本代码块,将候选代码块的分类特征信息替换为样本代码块的分类特征信息,即可得到样本代码块为目标代码块的概率。

可以理解的是,上述S102的过程可以理解为对候选代码块和分类特征信息的文本处理过程,这个文本处理过程使用了自然语言处理技术,从而本公开实施例实现了S101的关键词匹配过程和S103的自然语言处理技术的融合,多种技术的融合可以有助于提高代码的检测准确度。

S103:根据概率确定候选代码块是否为目标代码块。

具体地,可以通过以下两种方式中的一种确定目标代码块,也可以通过以下两种方式的结合确定目标代码块。

第一种方式,将上述概率大于或等于预设阈值的候选代码块确定为目标代码块。其中,预设阈值可以根据实际应用场景灵活设定,本公开实施例对其不加以限制。例如,如果上述概率的取值范围为0至1时,该预设阈值可以设置为0.8,从而可以将概率大于或等于0.8的候选代码块确定为目标代码块。

第二种方式,将按照概率降序排列的至少一个候选代码块中位于靠前位置的代码块确定为目标代码块。例如,可以将排序在前10位的候选代码块确定为目标代码块。

当然,在将上述两种方式结合时,可以将概率大于或等于预设阈值,且位于靠前位置的代码块确定为目标代码块。例如,可以将概率大于或等于0.8,且排序在前10位的候选代码块确定为目标代码块。

可以看出,本公开实施例可以通过多种方法确定目标代码块,以满足不同应用场景的需求。

对应于上文实施例的代码检测方法,图4是本公开实施例提供的一种代码检测装置的结构框图。为了便于说明,仅示出了与本公开实施例相关的部分。参照图4,上述代码检测装置200包括:代码匹配模块201、概率预测模块202和代码块确定模块203。

其中,代码匹配模块201,用于将预设关键词与预设代码进行匹配,得到候选代码块和所述候选代码块的分类特征信息,所述候选代码块包括:所述预设关键词所在的目标代码行、所述目标代码行之前的代码行和所述目标代码行之后的代码行,所述分类特征信息包括以下至少一项:所述候选代码块所属的代码文件类型、所述候选代码块所属的代码库信息、所述候选代码块是否为注释的指示信息。

概率预测模块202,用于将所述候选代码块和对应的分类特征信息输入到已训练的深度学习模型中,得到所述候选代码块为目标代码块的概率。

代码块确定模块203,用于根据所述概率确定所述候选代码块是否为目标代码块。

可选地,所述深度学习模型包括第一向量生成子模型、第二向量生成子模型和预测层,所述概率预测模块202还用于:

将所述候选代码块输入到第一向量生成子模型中,得到所述候选代码块的语义特征向量。

将所述分类特征信息输入到第二向量生成子模型中,得到所述候选代码块的分类特征向量。

将所述语义特征向量和所述分类特征向量输入到预测层中,得到所述候选代码块为目标代码块的概率。

可选地,所述深度学习模型是通过以下多轮迭代预先训练得到的,每轮迭代包括:

训练预测模块,用于将预设数量的样本代码块和对应的样本分类特征输入到当前深度学习模型中,得到所述样本代码块为目标代码块的概率,所述样本代码块对应有所述样本代码块是否为目标代码块的标签。

损失值确定模块,用于根据所述样本代码块的所述概率和所述标签确定损失值。

继续训练模块,用于若所述损失值不满足预设收敛条件,则调整所述当前深度学习模型的参数,以进行下一轮迭代。

结束训练模块,用于若所述损失值满足预设收敛条件,则结束训练,并将当前深度学习模型确定为训练得到的深度学习模型。

可选地,所述代码块确定模块203还用于:

将所述概率大于或等于预设阈值的候选代码块确定为目标代码块。和/或,

将按照所述概率降序排列的至少一个候选代码块中位于靠前位置的代码块确定为目标代码块。

可选地,所述第一向量生成子模型为LSTM模型,所述第二向量生成子模型为全连接模型。

本实施例提供的代码检测装置,可用于执行上述图2所示的方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。

图5是本公开实施例提供的一种电子设备600的结构框图。该电子设备600包括存储器602和至少一个处理器601。

其中,存储器602存储计算机执行指令。

至少一个处理器601执行存储器602存储的计算机执行指令,使得电子设备601实现前述图2中的方法。

此外,该电子设备还可以包括接收器603和发送器604,接收器603用于接收从其余装置或设备的信息,并转发给处理器601,发送器604用于将信息发送到其余装置或设备。

在第一方面的第一种示例中,本公开实施例提供了一种代码检测方法,所述方法包括:

将预设关键词与预设代码进行匹配,得到候选代码块和所述候选代码块的分类特征信息,所述候选代码块包括:所述预设关键词所在的目标代码行、所述目标代码行之前的代码行和所述目标代码行之后的代码行,所述分类特征信息包括以下至少一项:所述候选代码块所属的代码文件类型、所述候选代码块所属的代码库信息、所述候选代码块是否为注释的指示信息。

将所述候选代码块和对应的分类特征信息输入到已训练的深度学习模型中,得到所述候选代码块为目标代码块的概率。

根据所述概率确定所述候选代码块是否为目标代码块。

基于第一方面的第一种示例,在第一方面的第二种示例中,所述深度学习模型包括第一向量生成子模型、第二向量生成子模型和预测层,所述将所述候选代码块和对应的分类特征信息输入到已训练的深度学习模型中,得到所述候选代码块为目标代码块的概率,包括:

将所述候选代码块输入到第一向量生成子模型中,得到所述候选代码块的语义特征向量。

将所述分类特征信息输入到第二向量生成子模型中,得到所述候选代码块的分类特征向量。

将所述语义特征向量和所述分类特征向量输入到预测层中,得到所述候选代码块为目标代码块的概率。

基于第一方面的第一或第二种示例,在第一方面的第三种示例中,所述深度学习模型是通过以下多轮迭代预先训练得到的,每轮迭代包括:

将预设数量的样本代码块和对应的样本分类特征输入到当前深度学习模型中,得到所述样本代码块为目标代码块的概率,所述样本代码块对应有所述样本代码块是否为目标代码块的标签。

根据所述样本代码块的所述概率和所述标签确定损失值。

若所述损失值不满足预设收敛条件,则调整所述当前深度学习模型的参数,以进行下一轮迭代。

若所述损失值满足预设收敛条件,则结束训练,并将当前深度学习模型确定为训练得到的深度学习模型。

基于第一方面的第一或第二种示例,在第一方面的第四种示例中,所述根据所述概率确定所述候选代码块是否为目标代码块,包括:

将所述概率大于或等于预设阈值的候选代码块确定为目标代码块。和/或,

将按照所述概率降序排列的至少一个候选代码块中位于靠前位置的代码块确定为目标代码块。

基于第一方面的第二种示例,在第一方面的第五种示例中,所述第一向量生成子模型为LSTM模型,所述第二向量生成子模型为全连接模型。

在第二方面的第一种示例中,提供了一种代码检测装置,所述装置包括:

代码匹配模块,用于将预设关键词与预设代码进行匹配,得到候选代码块和所述候选代码块的分类特征信息,所述候选代码块包括:所述预设关键词所在的目标代码行、所述目标代码行之前的代码行和所述目标代码行之后的代码行,所述分类特征信息包括以下至少一项:所述候选代码块所属的代码文件类型、所述候选代码块所属的代码库信息、所述候选代码块是否为注释的指示信息。

概率预测模块,用于将所述候选代码块和对应的分类特征信息输入到已训练的深度学习模型中,得到所述候选代码块为目标代码块的概率。

代码块确定模块,用于根据所述概率确定所述候选代码块是否为目标代码块。

基于第二方面的第一种示例,在第二方面的第二种示例中,所述深度学习模型包括第一向量生成子模型、第二向量生成子模型和预测层,所述概率预测模块还用于:

将所述候选代码块输入到第一向量生成子模型中,得到所述候选代码块的语义特征向量。

将所述分类特征信息输入到第二向量生成子模型中,得到所述候选代码块的分类特征向量。

将所述语义特征向量和所述分类特征向量输入到预测层中,得到所述候选代码块为目标代码块的概率。

基于第二方面的第一或第二种示例,在第二方面的第三种示例中,所述深度学习模型是通过以下多轮迭代预先训练得到的,每轮迭代包括:

训练预测模块,用于将预设数量的样本代码块和对应的样本分类特征输入到当前深度学习模型中,得到所述样本代码块为目标代码块的概率,所述样本代码块对应有所述样本代码块是否为目标代码块的标签。

损失值确定模块,用于根据所述样本代码块的所述概率和所述标签确定损失值。

继续训练模块,用于若所述损失值不满足预设收敛条件,则调整所述当前深度学习模型的参数,以进行下一轮迭代。

结束训练模块,用于若所述损失值满足预设收敛条件,则结束训练,并将当前深度学习模型确定为训练得到的深度学习模型。

基于第二方面的第一或第二种示例,在第二方面的第四种示例中,所述代码块确定模块还用于:

将所述概率大于或等于预设阈值的候选代码块确定为目标代码块。和/或,

将按照所述概率降序排列的至少一个候选代码块中位于靠前位置的代码块确定为目标代码块。

基于第二方面的第二种示例,在第二方面的第五种示例中,所述第一向量生成子模型为LSTM模型,所述第二向量生成子模型为全连接模型。

第三方面,根据本公开的一个或多个实施例,提供了一种电子设备,包括:至少一个处理器和存储器。

所述存储器存储计算机执行指令。

所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述电子设备实现第一方面任一项所述的方法。

第四方面,根据本公开的一个或多个实施例,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,使计算设备实现第一方面任一项所述的方法。

第五方面,根据本公开的一个或多个实施例,提供了一种计算机程序,所述计算机程序用于实现第一方面任一项所述的方法。

以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。

尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

相关技术
  • 基于哈希值的代码克隆检测方法、电子设备、存储介质
  • 一种源代码检测方法及装置、电子设备
  • 脚本代码检测方法、装置、计算机设备及存储介质
  • 代码质量检测方法、服务器、系统、设备及存储介质
  • 一种多人协同开发编程代码的质量检测方法及电子设备
  • 代码质量检测、代码检测质量的评估方法、装置及设备
  • 代码检测方法和代码检测装置、计算机设备、存储介质
技术分类

06120116511747