CN114860616B - 一种代码检测方法、装置、设备和存储介质 - Google Patents
一种代码检测方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN114860616B CN114860616B CN202210637325.5A CN202210637325A CN114860616B CN 114860616 B CN114860616 B CN 114860616B CN 202210637325 A CN202210637325 A CN 202210637325A CN 114860616 B CN114860616 B CN 114860616B
- Authority
- CN
- China
- Prior art keywords
- detection result
- model
- code
- probability value
- sample
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 310
- 238000003062 neural network model Methods 0.000 claims abstract description 62
- 238000000034 method Methods 0.000 claims abstract description 36
- 238000012549 training Methods 0.000 claims abstract description 30
- 238000010801 machine learning Methods 0.000 claims abstract description 14
- 238000003058 natural language processing Methods 0.000 claims abstract description 10
- 238000004590 computer program Methods 0.000 claims description 16
- 239000013598 vector Substances 0.000 claims description 13
- 230000015654 memory Effects 0.000 claims description 12
- 238000013145 classification model Methods 0.000 claims description 8
- 238000013136 deep learning model Methods 0.000 claims description 8
- 238000013135 deep learning Methods 0.000 abstract 1
- 238000000605 extraction Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 8
- 238000007373 indentation Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000007477 logistic regression Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000007637 random forest analysis Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Machine Translation (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了一种代码检测方法、装置、设备和存储介质。该方法包括:获取待检测代码;将所述待检测代码输入第一模型得到第一检测结果,其中,所述第一模型通过第一样本集训练第一神经网络模型得到,所述第一样本包括:代码特征样本和代码特征样本对应的检测结果;将所述待检测代码输入第二模型得到第二检测结果,其中,所述第二模型通过第二样本集训练第二神经网络模型得到,所述第二样本包括:代码序列样本和代码序列样本对应的检测结果;根据所述第一检测结果和所述第二检测结果确定目标检测结果。本发明实施例通过引入机器学习、深度学习和自然语言处理来提高代码检测的准确度和效率,并使代码检测能自动适应不同用户的需求。
Description
技术领域
本发明涉及代码检测技术领域,尤其涉及一种代码检测方法、装置、设备和存储介质。
背景技术
在软件开发过程中需要对代码进行检测,但是目前行业内没有统一的代码检测标准,不同用户的代码检测标准不一。人工代码检测准度较高但所需人力成本也较高,基于纯规则或简单的机器学习等代码检测程序的检测效率较高但准度不够。
发明内容
本发明提供了一种代码检测方法、装置、设备和存储介质,以解决现有技术代码检测过程中人工代码检测所需人力成本高以及基于纯规则或简单的机器学习等代码检测准度不够的问题,提高了代码检测的准确度和效率,且能自适应地应用于不同用户的需求。
根据本发明的一方面,提供了一种代码检测方法,该方法包括:
获取待检测代码;
将所述待检测代码输入第一模型得到第一检测结果,其中,所述第一模型通过第一样本集训练第一神经网络模型得到,所述第一样本包括:代码特征样本和代码特征样本对应的检测结果;
将所述待检测代码输入第二模型得到第二检测结果,其中,所述第二模型通过第二样本集训练第二神经网络模型得到,所述第二样本包括:代码序列样本和代码序列样本对应的检测结果;
根据所述第一检测结果和所述第二检测结果确定目标检测结果。
根据本发明的另一方面,提供了一种代码检测装置,该装置包括:
获取模块,用于获取待检测代码;
第一输入模块,用于将所述待检测代码输入第一模型得到第一检测结果,其中,所述第一模型通过第一样本集训练第一神经网络模型得到,所述第一样本包括:代码特征样本和代码特征样本对应的检测结果;
第二输入模块,用于将所述待检测代码输入第二模型得到第二检测结果,其中,所述第二模型通过第二样本集训练第二神经网络模型得到,所述第二样本包括:代码序列样本和代码序列样本对应的检测结果;
确定模块,用于根据所述第一检测结果和所述第二检测结果确定目标检测结果。
根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的代码检测方法。
根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的代码检测方法。
本发明实施例的技术方案,通过获取待检测代码,将待检测代码输入第一模型得到第一检测结果,将待检测代码输入第二模型得到第二检测结果,根据第一检测结果和第二检测结果确定目标检测结果,解决了代码检测过程中人工代码检测所需人力成本高以及基于纯规则或简单的机器学习等代码检测准度不够的问题,取得了提高代码检测的准确度和效率,且能自适应地应用于不同用户的需求的有益效果。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例一提供的一种代码检测方法的流程图;
图2是根据本发明实施例二提供的一种代码检测装置的结构示意图;
图3是实现本发明实施例的代码检测方法的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“目标”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1是根据本发明实施例一提供的一种代码检测方法的流程图,本实施例可适用于代码检测情况,该方法可以由代码检测装置来执行,该代码检测装置可以采用硬件和/或软件的形式实现,该代码检测装置可集成在任何提供代码检测功能的电子设备中。如图1所示,该方法包括:
S101、获取待检测代码。
其中,待检测代码可以是待进行检测的程序代码。具体的,待检测代码可以是软件开发过程中的代码。
具体的,获取软件开发过程中的待检测代码。
S102、将待检测代码输入第一模型得到第一检测结果。
其中,第一模型可以是机器学习分类模型。具体的,机器学习分类模型可以包括:逻辑回归、随机森林、朴素贝叶斯、SVM(Support Vector Machine,支持向量机)和梯度提升树等。优选的,在本实施例中机器学习分类模型默认是逻辑回归。
需要说明的是,第一检测结果指的是将待检测代码输入到第一模型中,第一模型得出的检测结果。
其中,第一模型通过第一样本集训练第一神经网络模型得到。
需要说明的是,第一样本集可以是由至少一个第一样本组成的集合。第一样本包括:代码特征样本和代码特征样本对应的检测结果。
需要解释的是,代码特征样本可以是对代码进行特征抽取后得到的代码特征。具体的,代码特征样本例如可以包括:代码的字数、行数、空行数、非行开头的连续空格数、注释字数、注释行数、注释的中文字数、注释的中文占比、最大行长、缩进个数、缩进行数、缩进行占比、变量个数、最长变量字数、变量中的英文单词数、变量中的非英文单词数和敏感词数量等。
其中,第一神经网络模型可以是机器学习分类模型对应的逻辑回归神经网络模型。
具体的,将至少一组代码特征样本和代码特征样本对应的检测结果组成第一样本集,通过第一样本集训练第一神经网络模型得到第一模型,将待检测代码输入第一模型得到第一检测结果。
S103、将待检测代码输入第二模型得到第二检测结果。
其中,第二模型可以是深度学习模型。具体的,深度学习模型可以包括:LSTM(LongShort-Term Memory,长短期记忆网络)、TestCNN(Test Convolutional Neural Network)、GRU(Gate Recurrent Unit,是循环神经网络的一种)等。优选的,在本实施例中深度学习模型默认使用LSTM。
需要说明的是,第二检测结果指的是将待检测代码输入到第二模型中,第二模型得出的检测结果。
其中,第二模型通过第二样本集训练第二神经网络模型得到。
需要说明的是,第二样本集可以是由至少一个第二样本组成的集合。第二样本包括:代码序列样本和代码序列样本对应的检测结果。
需要解释的是,代码序列样本可以是对代码进行特征抽取后得到的代码词向量序列。
其中,第二神经网络模型可以是深度学习模型对应的LSTM神经网络模型。
具体的,将至少一组代码序列样本和代码序列样本对应的检测结果组成第二样本集,通过第二样本集训练第二神经网络模型得到第二模型,将待检测代码输入第二模型得到第二检测结果。
S104、根据第一检测结果和第二检测结果确定目标检测结果。
需要说明的是,目标检测结果可以是对待检测代码进行检测后,待检测代码对应的最终检测结果。
具体的,对第一检测结果和第二检测结果进行加权求和,得到目标检测结果。
本发明实施例的技术方案,通过获取待检测代码,将待检测代码输入第一模型得到第一检测结果,将待检测代码输入第二模型得到第二检测结果,根据第一检测结果和第二检测结果确定目标检测结果,解决了代码检测过程中人工代码检测所需人力成本高以及基于纯规则或简单的机器学习等代码检测准度不够的问题,取得了提高代码检测的准确度和效率,且能自适应地应用于不同用户的需求的有益效果。
可选的,通过第一样本集训练第一神经网络模型,包括:
建立第一神经网络模型。
具体的,建立机器学习分类模型对应的逻辑回归神经网络模型。
将第一样本集中的代码特征样本输入第一神经网络模型,得到预测检测结果。
在实际操作过程中,需要先制定代码检测规则,获取待检测代码样本,根据代码检测规则对待检测代码样本进行人工代码检测,将待检测代码样本和待检测代码样本对应的人工代码检测结果存储至标签库。之后,基于标签库中的待检测代码样本和待检测代码样本对应的人工代码检测结果对第一神经网络模型进行训练。
具体的,对标签库中的待检测代码样本进行特征抽取,得到代码特征样本,将至少一组代码特征样本和代码特征样本对应的人工代码检测结果组成第一样本集,将第一样本集中的代码特征样本输入第一神经网络模型,得到预测检测结果。
根据代码特征样本对应的检测结果和预测检测结果训练第一神经网络模型的参数。
具体的,根据代码特征样本对应的标签库中的人工代码检测结果和第一神经网络模型输出的预测检测结果训练第一神经网络模型的参数。
返回执行将第一样本集中的代码特征样本输入第一神经网络模型,得到预测检测结果的操作,直至得到第一模型。
具体的,周期性地读取标签库中的待检测代码样本以及待检测代码样本对应的人工代码检测结果,不断执行将第一样本集中的代码特征样本输入第一神经网络模型,得到预测检测结果的操作,直至得到第一模型。
可选的,通过第二样本集训练第二神经网络模型,包括:
建立第二神经网络模型。
具体的,建立深度学习模型对应的LATM神经网络模型。
将第二样本集中的代码序列样本输入第二神经网络模型,得到预测检测结果。
在实际操作过程中,需要先制定代码检测规则,获取待检测代码样本,根据代码检测规则对待检测代码样本进行人工代码检测,将待检测代码样本和待检测代码样本对应的人工代码检测结果存储至标签库。之后,基于标签库中的待检测代码样本和待检测代码样本对应的人工代码检测结果对第二神经网络模型进行训练。
具体的,对标签库中的待检测代码样本进行特征抽取,得到代码序列样本,将至少一组代码序列样本和代码序列样本对应的人工代码检测结果组成第二样本集,将第二样本集中的代码序列样本输入第二神经网络模型,得到预测检测结果。
根据代码序列样本对应的检测结果和预测检测结果训练第二神经网络模型的参数。
具体的,根据代码序列样本对应的标签库中的人工代码检测结果和第二神经网络模型输出的预测检测结果训练第二神经网络模型的参数。
返回执行将第二样本集中的代码序列样本输入第二神经网络模型,得到预测检测结果的操作,直至得到第二模型。
具体的,周期性地读取标签库中的待检测代码样本以及待检测代码样本对应的人工代码检测结果,不断执行将第二样本集中的代码序列样本输入第二神经网络模型,得到预测检测结果的操作,直至得到第二模型。
可选的,根据第一检测结果和第二检测结果确定目标检测结果,包括:
获取第一模型检测结果的概率值以及第二模型检测结果的概率值。
需要解释的是,第一模型检测结果的概率值可以是第一模型输出的待检测代码是否通过的概率值,第二模型检测结果的概率值可以是第二模型输出的待检测代码是否通过的概率值。具体的,概率值可以是区间[0,1]之间的数字。
具体的,获取第一模型输出的检测结果即待检测代码是否通过的概率值,以及第二模型输出的检测结果即待检测代码是否通过的概率值。
获取第一模型检测结果的权重以及第二模型检测结果的权重。
需要说明的是,第一模型检测结果的权重以及第二模型检测结果的权重在初始时可以是由人为设置,例如可以是,第一模型检测结果的权重为0.5,第二模型检测结果的权重为0.5。在之后第一模型和第二模型的不断作用中,可以根据实际情况适当调整第一模型检测结果的权重以及第二模型检测结果的权重。
具体的,获取第一模型检测结果的权重以及第二模型检测结果的权重。
根据第一模型检测结果的概率值、第一模型检测结果的权重、第二模型检测结果的概率值以及第二模型检测结果的权重确定目标概率值。
需要解释的是,目标概率值可以是待检测代码对应的概率值。具体的,目标概率值可以是对第一模型检测结果的概率值和第二模型检测结果的概率值进行加权求和后得到的概率值。
具体的,根据第一模型检测结果的概率值、第一模型检测结果的权重、第二模型检测结果的概率值以及第二模型检测结果的权重,对第一模型检测结果的概率值和第二模型检测结果的概率值进行加权求和,得到目标概率值。
根据目标概率值确定目标检测结果。
具体的,可以设置两个阈值,将目标概率值与两个阈值进行比较,离散化出三种目标检测结果,分别为:检测通过、检测不通过和检测不确定。
可选的,根据目标概率值确定目标检测结果,包括:
若目标概率值小于第一阈值,则确定目标检测结果为检测通过。
其中,第一阈值可以是根据实际情况设定的值,当目标概率值小于此值时,则确定目标检测结果为检测通过。
优选的,第一阈值可以设置为0.4,即,若目标概率值取值于[0,0.4)内,则确定目标检测结果为检测通过。在实际操作过程中,检测通过的代码将会进入部署流程。
若目标概率值大于第二阈值,则确定目标检测结果为检测不通过。
需要说明的是,第二阈值可以是根据实际情况设定的值,当目标概率值大于此值时,则确定目标检测结果为检测不通过。其中,第二阈值大于第一阈值。
优选的,第二阈值可以设置为0.6,即,若目标概率值取值于(0.6,1]内,则确定目标检测结果为检测不通过。在实际操作过程中,检测不通过的代码将会被退回,修改后重新进行代码检测。
若目标概率值大于或者等于第一阈值且小于或者等于第二阈值,则确定目标检测结果为检测不确定。
具体的,若目标概率值大于或者等于第一阈值且小于或者等于第二阈值,即目标概率值取值于[0.4,0.6]内(此时,第一阈值为0.4,第二阈值为0.6),则确定目标检测结果为检测不确定。在实际操作过程中,检测不确定的代码将会流转到人工检测流程,人工代码检测结果将会存储到标签库中。
可选的,将待检测代码输入第一模型得到第一检测结果包括:
基于自然语言处理对待检测代码进行特征抽取,得到词向量序列和第一特征信息。
可以知道的是,自然语言处理(Natural Language Processing,NLP)是以语言为对象,利用计算机技术来分析、理解和处理自然语言的一门学科,即把计算机作为语言研究的强大工具,在计算机的支持下对语言信息进行定量化的研究,并提供可供人与计算机之间能共同使用的语言描写。
需要说明的是,特征抽取可以是抽取待检测代码的特征。具体的,待检测代码的特征可以包括代码的:变量个数、最长变量字数、变量中的英文单词数、变量中的非英文单词数和敏感词数量等。
可以知道的是,词向量(Word embedding),又叫Word嵌入式自然语言处理(NLP)中的一组语言建模和特征学习技术的统称,其中来自词汇表的单词或短语被映射到实数的向量。词向量序列可以是一系列词向量的数组排列。
需要解释的是,第一特征信息可以是待检测代码的变量个数、最长变量字数、变量中的英文单词数、变量中的非英文单词数和敏感词数量等特征信息。
具体的,基于自然语言处理对待检测代码进行特征抽取,得到词向量序列,以及待检测代码的变量个数、最长变量字数、变量中的英文单词数、变量中的非英文单词数和敏感词数量等特征信息。
基于预设规则对待检测代码进行特征抽取,得到第二特征信息。
需要说明的是,预设规则可以是预先设置的分别对待检测代码进行字数、行数、空行数、非行开头的连续空格数注释字数、注释行数、注释的中文字数、注释的中文占比、最大行长、缩进个数、缩进行数和缩进行占比等特征的抽取规则。其中每个特征都对应一个各自的规则,例如可以是,对待检测代码进行字数特征抽取的规则为抽取非空白字符数量,对待检测代码进行行数特征抽取的规则为按换行符划分的非空行数量进行抽取,对待检测代码进行空行数特征抽取的规则为按换行符划分的空行数量进行抽取,对待检测代码进行非行开头的连续空格数特征抽取的规则为抽取非行开头的连续空格数量,对待检测代码进行注释字数特征抽取的规则为抽取注释中的非空白字符数量,对待检测代码进行注释行数特征抽取的规则为抽取注释中的按换行符划分的空行数量,对待检测代码进行注释的中文字数特征抽取的规则为抽取注释的中文字数,对待检测代码进行注释的中文占比特征抽取的规则为抽取注释的中文字数与注释中的非空白字符数量的比值,对待检测代码进行最大行长特征抽取的规则为抽取最长行的非空白字符数量,对待检测代码进行缩进个数特征抽取的规则为抽取非空行的缩进字符数量,对待检测代码进行缩进行数特征抽取的规则为抽取非空行的缩进数量,对待检测代码进行缩进行占比特征抽取的规则为抽取非空行的缩进数量与按换行符划分的非空行数量的比值。
需要解释的是,特征抽取可以是抽取待检测代码的特征。具体的,待检测代码的特征可以包括代码的:字数、行数、空行数、非行开头的连续空格数、注释字数、注释行数、注释的中文字数、注释的中文占比、最大行长、缩进个数、缩进行数和缩进行占比等。
需要解释的是,第二特征信息可以是待检测代码的字数、行数、空行数、非行开头的连续空格数、注释字数、注释行数、注释的中文字数、注释的中文占比、最大行长、缩进个数、缩进行数和缩进行占比等特征信息。
具体的,基于预设规则对待检测代码进行特征抽取,得到待检测代码的字数、行数、空行数、非行开头的连续空格数、注释字数、注释行数、注释的中文字数、注释的中文占比、最大行长、缩进个数、缩进行数和缩进行占比等特征信息。
将第二特征信息和第一特征信息输入第一模型,得到第一检测结果。
具体的,将待检测代码的字数、行数、空行数、非行开头的连续空格数、注释字数、注释行数、注释的中文字数、注释的中文占比、最大行长、缩进个数、缩进行数和缩进行占比等特征信息,以及待检测代码的变量个数、最长变量字数、变量中的英文单词数、变量中的非英文单词数和敏感词数量等特征信息,输入机器学习分类模型,得到第一检测结果。
可选的,将待检测代码输入第二模型得到的第二检测结果包括:
将词向量序列输入第二模型,得到的第二检测结果。
具体的,将词向量序列输入深度学习模型,得到的第二检测结果。
经过一段时间的持续学习,本发明实施例中的代码检测方法就会自动适应不同用户的代码检测标准,检测不确定的代码将越来越少,可大幅度减少人工代码检测成本以及提高自动化程序代码检测准度及效率。
实施例二
图2是根据本发明实施例二提供的一种代码检测装置的结构示意图。如图2所示,该装置包括:获取模块201、第一输入模块202、第二输入模块203和确定模块204。
其中,获取模块201,用于获取待检测代码;
第一输入模块202,用于将所述待检测代码输入第一模型得到第一检测结果,其中,所述第一模型通过第一样本集训练第一神经网络模型得到,所述第一样本包括:代码特征样本和代码特征样本对应的检测结果;
第二输入模块203,用于将所述待检测代码输入第二模型得到第二检测结果,其中,所述第二模型通过第二样本集训练第二神经网络模型得到,所述第二样本包括:代码序列样本和代码序列样本对应的检测结果;
确定模块204,用于根据所述第一检测结果和所述第二检测结果确定目标检测结果。
可选的,所述第一输入模块202包括:
第一建立单元,用于建立第一神经网络模型;
第一输入单元,用于将所述第一样本集中的代码特征样本输入所述第一神经网络模型,得到预测检测结果;
第一训练单元,用于根据所述代码特征样本对应的检测结果和所述预测检测结果训练所述第一神经网络模型的参数;
第一执行单元,用于返回执行将所述第一样本集中的代码特征样本输入所述第一神经网络模型,得到预测检测结果的操作,直至得到第一模型。
可选的,所述第二输入模块203包括:
第二建立单元,用于建立第二神经网络模型;
第二输入单元,用于将所述第二样本集中的代码序列样本输入所述第二神经网络模型,得到预测检测结果;
第二训练单元,用于根据所述代码序列样本对应的检测结果和所述预测检测结果训练所述第二神经网络模型的参数;
第二执行单元,用于返回执行将所述第二样本集中的代码序列样本输入所述第二神经网络模型,得到预测检测结果的操作,直至得到第二模型。
可选的,所述确定模块204包括:
第一获取单元,用于获取所述第一模型检测结果的概率值以及所述第二模型检测结果的概率值;
第二获取单元,用于获取所述第一模型检测结果的权重以及所述第二模型检测结果的权重;
第一确定单元,用于根据所述第一模型检测结果的概率值、所述第一模型检测结果的权重、所述第二模型检测结果的概率值以及所述第二模型检测结果的权重确定目标概率值;
第二确定单元,用于根据所述目标概率值确定目标检测结果。
可选的,所述第二确定单元具体用于:
若所述目标概率值小于第一阈值,则确定目标检测结果为检测通过;
若所述目标概率值大于第二阈值,则确定目标检测结果为检测不通过,其中,所述第二阈值大于所述第一阈值;
若所述目标概率值大于或者等于所述第一阈值且小于或者等于所述第二阈值,则确定目标检测结果为检测不确定。
可选的,所述第一输入模块202包括:
第一特征抽取单元,用于基于自然语言处理对所述待检测代码进行特征抽取,得到词向量序列和第一特征信息;
第二特征抽取单元,用于基于预设规则对所述待检测代码进行特征抽取,得到第二特征信息;
第三输入单元,用于将所述第二特征信息和所述第一特征信息输入第一模型,得到第一检测结果。
可选的,所述第二输入模块203包括:
第四输入单元,用于将所述词向量序列输入第二模型,得到的第二检测结果。
本发明实施例所提供的代码检测装置可执行本发明任意实施例所提供的代码检测方法,具备执行方法相应的功能模块和有益效果。
实施例三
图3示出了可以用来实施本发明的实施例的电子设备30的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图3所示,电子设备30包括至少一个处理器31,以及与至少一个处理器31通信连接的存储器,如只读存储器(ROM)32、随机访问存储器(RAM)33等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器31可以根据存储在只读存储器(ROM)32中的计算机程序或者从存储单元38加载到随机访问存储器(RAM)33中的计算机程序,来执行各种适当的动作和处理。在RAM 33中,还可存储电子设备30操作所需的各种程序和数据。处理器31、ROM 32以及RAM 33通过总线34彼此相连。输入/输出(I/O)接口35也连接至总线34。
电子设备30中的多个部件连接至I/O接口35,包括:输入单元36,例如键盘、鼠标等;输出单元37,例如各种类型的显示器、扬声器等;存储单元38,例如磁盘、光盘等;以及通信单元39,例如网卡、调制解调器、无线通信收发机等。通信单元39允许电子设备30通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器31可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器31的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器31执行上文所描述的各个方法和处理,例如代码检测方法:
获取待检测代码;
将所述待检测代码输入第一模型得到第一检测结果,其中,所述第一模型通过第一样本集训练第一神经网络模型得到,所述第一样本包括:代码特征样本和代码特征样本对应的检测结果;
将所述待检测代码输入第二模型得到第二检测结果,其中,所述第二模型通过第二样本集训练第二神经网络模型得到,所述第二样本包括:代码序列样本和代码序列样本对应的检测结果;
根据所述第一检测结果和所述第二检测结果确定目标检测结果。
在一些实施例中,代码检测方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元38。在一些实施例中,计算机程序的部分或者全部可以经由ROM 32和/或通信单元39而被载入和/或安装到电子设备30上。当计算机程序加载到RAM 33并由处理器31执行时,可以执行上文描述的代码检测方法的一个或多个步骤。备选地,在其他实施例中,处理器31可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行代码检测方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (9)
1.一种代码检测方法,其特征在于,包括:
获取待检测代码;
将所述待检测代码输入第一模型得到第一检测结果,其中,所述第一模型通过第一样本集训练第一神经网络模型得到,所述第一样本包括:代码特征样本和代码特征样本对应的检测结果;
将所述待检测代码输入第二模型得到第二检测结果,其中,所述第二模型通过第二样本集训练第二神经网络模型得到,所述第二样本包括:代码序列样本和代码序列样本对应的检测结果;
根据所述第一检测结果和所述第二检测结果确定目标检测结果;
其中,所述根据所述第一检测结果和所述第二检测结果确定目标检测结果,包括:
获取所述第一模型检测结果的概率值以及所述第二模型检测结果的概率值;
获取所述第一模型检测结果的权重以及所述第二模型检测结果的权重;
根据所述第一模型检测结果的概率值、所述第一模型检测结果的权重、所述第二模型检测结果的概率值以及所述第二模型检测结果的权重确定目标概率值;
根据所述目标概率值确定目标检测结果;
其中,所述根据所述第一模型检测结果的概率值、所述第一模型检测结果的权重、所述第二模型检测结果的概率值以及所述第二模型检测结果的权重确定目标概率值,包括:根据所述第一模型检测结果的概率值、所述第一模型检测结果的权重、所述第二模型检测结果的概率值以及所述第二模型检测结果的权重,对所述第一模型检测结果的概率值和所述第二模型检测结果的概率值进行加权求和,得到目标概率值;
其中,所述第一模型检测结果的概率值是所述第一模型输出的待检测代码是否通过的概率值,所述第二模型检测结果的概率值是所述第二模型输出的待检测代码是否通过的概率值;
其中,所述第一模型是机器学习分类模型;所述第二模型是深度学习模型。
2.根据权利要求1所述的方法,其特征在于,通过第一样本集训练第一神经网络模型,包括:
建立第一神经网络模型;
将所述第一样本集中的代码特征样本输入所述第一神经网络模型,得到预测检测结果;
根据所述代码特征样本对应的检测结果和所述预测检测结果训练所述第一神经网络模型的参数;
返回执行将所述第一样本集中的代码特征样本输入所述第一神经网络模型,得到预测检测结果的操作,直至得到第一模型。
3.根据权利要求1所述的方法,其特征在于,通过第二样本集训练第二神经网络模型,包括:
建立第二神经网络模型;
将所述第二样本集中的代码序列样本输入所述第二神经网络模型,得到预测检测结果;
根据所述代码序列样本对应的检测结果和所述预测检测结果训练所述第二神经网络模型的参数;
返回执行将所述第二样本集中的代码序列样本输入所述第二神经网络模型,得到预测检测结果的操作,直至得到第二模型。
4.根据权利要求1所述的方法,其特征在于,根据所述目标概率值确定目标检测结果,包括:
若所述目标概率值小于第一阈值,则确定目标检测结果为检测通过;
若所述目标概率值大于第二阈值,则确定目标检测结果为检测不通过,其中,所述第二阈值大于所述第一阈值;
若所述目标概率值大于或者等于所述第一阈值且小于或者等于所述第二阈值,则确定目标检测结果为检测不确定。
5.根据权利要求1所述的方法,其特征在于,将所述待检测代码输入第一模型得到第一检测结果包括:
基于自然语言处理对所述待检测代码进行特征抽取,得到词向量序列和第一特征信息;
基于预设规则对所述待检测代码进行特征抽取,得到第二特征信息;
将所述第二特征信息和所述第一特征信息输入第一模型,得到第一检测结果。
6.根据权利要求5所述的方法,其特征在于,将所述待检测代码输入第二模型得到的第二检测结果包括:
将所述词向量序列输入第二模型,得到的第二检测结果。
7.一种代码检测装置,其特征在于,包括:
获取模块,用于获取待检测代码;
第一输入模块,用于将所述待检测代码输入第一模型得到第一检测结果,其中,所述第一模型通过第一样本集训练第一神经网络模型得到,所述第一样本包括:代码特征样本和代码特征样本对应的检测结果;
第二输入模块,用于将所述待检测代码输入第二模型得到第二检测结果,其中,所述第二模型通过第二样本集训练第二神经网络模型得到,所述第二样本包括:代码序列样本和代码序列样本对应的检测结果;
确定模块,用于根据所述第一检测结果和所述第二检测结果确定目标检测结果;
所述确定模块包括:
第一获取单元,用于获取所述第一模型检测结果的概率值以及所述第二模型检测结果的概率值;
第二获取单元,用于获取所述第一模型检测结果的权重以及所述第二模型检测结果的权重;
第一确定单元,用于根据所述第一模型检测结果的概率值、所述第一模型检测结果的权重、所述第二模型检测结果的概率值以及所述第二模型检测结果的权重确定目标概率值;
第二确定单元,用于根据所述目标概率值确定目标检测结果;
其中,所述第一确定单元具体用于:根据所述第一模型检测结果的概率值、所述第一模型检测结果的权重、所述第二模型检测结果的概率值以及所述第二模型检测结果的权重,对所述第一模型检测结果的概率值和所述第二模型检测结果的概率值进行加权求和,得到目标概率值;
其中,所述第一模型检测结果的概率值是所述第一模型输出的待检测代码是否通过的概率值,所述第二模型检测结果的概率值是所述第二模型输出的待检测代码是否通过的概率值;
其中,所述第一模型是机器学习分类模型;所述第二模型是深度学习模型。
8.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的代码检测方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-6中任一项所述的代码检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210637325.5A CN114860616B (zh) | 2022-06-07 | 2022-06-07 | 一种代码检测方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210637325.5A CN114860616B (zh) | 2022-06-07 | 2022-06-07 | 一种代码检测方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114860616A CN114860616A (zh) | 2022-08-05 |
CN114860616B true CN114860616B (zh) | 2023-05-19 |
Family
ID=82624589
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210637325.5A Active CN114860616B (zh) | 2022-06-07 | 2022-06-07 | 一种代码检测方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114860616B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321705A (zh) * | 2019-07-11 | 2019-10-11 | 北京百度网讯科技有限公司 | 用于生成模型的方法、装置和用于检测文件的方法、装置 |
CN112711530A (zh) * | 2020-12-28 | 2021-04-27 | 航天信息股份有限公司 | 一种基于机器学习的代码风险预测方法及系统 |
CN112989358A (zh) * | 2021-03-10 | 2021-06-18 | 华中科技大学 | 提高基于深度学习的源代码漏洞检测健壮性的方法及装置 |
CA3125861A1 (en) * | 2020-07-27 | 2021-10-06 | Thales Canada Inc. | Method of and system for online machine learning with dynamic model evaluation and selection |
CN113553864A (zh) * | 2021-06-30 | 2021-10-26 | 北京百度网讯科技有限公司 | 翻译模型的训练方法、装置、电子设备及存储介质 |
CN113779590A (zh) * | 2021-09-16 | 2021-12-10 | 中国民航大学 | 一种基于多维度表征的源代码漏洞检测方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11487501B2 (en) * | 2018-05-16 | 2022-11-01 | Snap Inc. | Device control using audio data |
CN111552799B (zh) * | 2020-04-30 | 2021-07-09 | 腾讯科技(深圳)有限公司 | 信息处理方法、装置、电子设备及存储介质 |
CN111930939A (zh) * | 2020-07-08 | 2020-11-13 | 泰康保险集团股份有限公司 | 一种文本检测的方法及装置 |
US20220094713A1 (en) * | 2020-09-21 | 2022-03-24 | Sophos Limited | Malicious message detection |
CN112989805A (zh) * | 2021-03-09 | 2021-06-18 | 北京百度网讯科技有限公司 | 一种文本检测方法、装置、设备及存储介质 |
CN113239354A (zh) * | 2021-04-30 | 2021-08-10 | 武汉科技大学 | 一种基于循环神经网络的恶意代码检测方法及系统 |
CN113283427B (zh) * | 2021-07-20 | 2021-10-01 | 北京世纪好未来教育科技有限公司 | 文本识别方法、装置、设备及介质 |
-
2022
- 2022-06-07 CN CN202210637325.5A patent/CN114860616B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321705A (zh) * | 2019-07-11 | 2019-10-11 | 北京百度网讯科技有限公司 | 用于生成模型的方法、装置和用于检测文件的方法、装置 |
CA3125861A1 (en) * | 2020-07-27 | 2021-10-06 | Thales Canada Inc. | Method of and system for online machine learning with dynamic model evaluation and selection |
CN112711530A (zh) * | 2020-12-28 | 2021-04-27 | 航天信息股份有限公司 | 一种基于机器学习的代码风险预测方法及系统 |
CN112989358A (zh) * | 2021-03-10 | 2021-06-18 | 华中科技大学 | 提高基于深度学习的源代码漏洞检测健壮性的方法及装置 |
CN113553864A (zh) * | 2021-06-30 | 2021-10-26 | 北京百度网讯科技有限公司 | 翻译模型的训练方法、装置、电子设备及存储介质 |
CN113779590A (zh) * | 2021-09-16 | 2021-12-10 | 中国民航大学 | 一种基于多维度表征的源代码漏洞检测方法 |
Non-Patent Citations (3)
Title |
---|
Sanket Shukla 等."RNN-Based Classifier to Detect Stealthy Malware using Localized Features and Complex Symbolic Sequence".《2019 18th IEEE International Conference On Machine Learning And Applications 》.2020,406-409. * |
王曙燕 等."基于BP 神经网络的代码坏味检测".《计算机工程》.2019,第46卷(第10期),216-222. * |
雷天翔 等."BiLSTM 在JavaScript 恶意代码检测中的应用".《计算机系统应用》.2021,第30卷(第8期),266-273. * |
Also Published As
Publication number | Publication date |
---|---|
CN114860616A (zh) | 2022-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112861885B (zh) | 图像识别方法、装置、电子设备及存储介质 | |
CN113553412A (zh) | 问答处理方法、装置、电子设备和存储介质 | |
CN113420822B (zh) | 模型训练方法和装置、文本预测方法和装置 | |
CN114881129A (zh) | 一种模型训练方法、装置、电子设备及存储介质 | |
CN112800919A (zh) | 一种检测目标类型视频方法、装置、设备以及存储介质 | |
CN112632227A (zh) | 简历匹配方法、装置、电子设备、存储介质和程序产品 | |
CN114037059A (zh) | 预训练模型、模型的生成方法、数据处理方法及装置 | |
CN112699237B (zh) | 标签确定方法、设备和存储介质 | |
CN118210670A (zh) | 日志异常检测方法、装置、电子设备及存储介质 | |
CN113408280A (zh) | 负例构造方法、装置、设备和存储介质 | |
CN117076610A (zh) | 一种数据敏感表的识别方法、装置、电子设备及存储介质 | |
CN114860616B (zh) | 一种代码检测方法、装置、设备和存储介质 | |
CN116340831A (zh) | 一种信息分类方法、装置、电子设备及存储介质 | |
CN114120180A (zh) | 一种时序提名的生成方法、装置、设备及介质 | |
CN114444514A (zh) | 语义匹配模型训练、语义匹配方法及相关装置 | |
CN113886543A (zh) | 生成意图识别模型的方法、装置、介质及程序产品 | |
CN117112445B (zh) | 一种机器学习模型稳定性检测方法、装置、设备及介质 | |
CN113380233B (zh) | 音频识别方法、装置、训练方法、训练装置、设备及存储介质 | |
CN113051472B (zh) | 点击通过率预估模型的建模方法、装置、设备以及存储介质 | |
CN114898374A (zh) | 一种图像的语义识别方法、装置、设备和存储介质 | |
CN116431809A (zh) | 基于银行客服场景下的文本标注方法、装置和存储介质 | |
CN113240304A (zh) | 特征构建方法、装置、设备以及存储介质 | |
CN115661439A (zh) | 一种票据识别方法、装置、电子设备及介质 | |
CN116914921A (zh) | 一种电网运行状态确定方法、装置、设备及存储介质 | |
CN117611164A (zh) | 风险语句识别方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |