CN112288079B - 图神经网络模型训练方法、软件缺陷检测方法及系统 - Google Patents
图神经网络模型训练方法、软件缺陷检测方法及系统 Download PDFInfo
- Publication number
- CN112288079B CN112288079B CN202011286945.6A CN202011286945A CN112288079B CN 112288079 B CN112288079 B CN 112288079B CN 202011286945 A CN202011286945 A CN 202011286945A CN 112288079 B CN112288079 B CN 112288079B
- Authority
- CN
- China
- Prior art keywords
- graph
- neural network
- network model
- attribute
- edge
- 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
- 230000007547 defect Effects 0.000 title claims abstract description 152
- 238000003062 neural network model Methods 0.000 title claims abstract description 152
- 238000012549 training Methods 0.000 title claims abstract description 49
- 238000001514 detection method Methods 0.000 title claims abstract description 37
- 238000000034 method Methods 0.000 title claims abstract description 28
- 238000012360 testing method Methods 0.000 claims abstract description 23
- 230000006870 function Effects 0.000 claims description 224
- 239000013598 vector Substances 0.000 claims description 121
- 230000003068 static effect Effects 0.000 claims description 39
- 238000012546 transfer Methods 0.000 claims description 26
- 238000010586 diagram Methods 0.000 claims description 23
- 238000010276 construction Methods 0.000 claims description 22
- 230000001419 dependent effect Effects 0.000 claims description 9
- 238000004458 analytical method Methods 0.000 description 10
- 238000007689 inspection Methods 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000013522 software testing Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- 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
-
- 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/3668—Software testing
-
- 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)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种图神经网络模型训练方法、软件缺陷检测方法及系统。包括:根据软件缺陷数据集,获取训练软件函数及测试软件函数,训练软件函数和测试软件函数预先标注有初始缺陷数据;根据训练软件函数的多维代码属性,构建初始多维代码属性图,根据测试软件函数的多维代码属性,构建目标多维代码属性图;基于初始多维代码属性图对初始图神经网络模型进行训练,得到训练后的图神经网络模型;基于目标多维代码属性图对训练后的图神经网络模型进行测试,获取预测缺陷数据;在初始缺陷数据和预测缺陷数据匹配时,将训练后的图神经网络模型作为目标图神经网络模型。本发明可以提高软件缺陷检测精度,减少了人工干预的过程,易于扩展检测的缺陷类型。
Description
技术领域
本发明涉及软件测试技术领域,特别是一种图神经网络模型训练方法、软件缺陷检测方法及系统。
背景技术
软件缺陷是计算机程序中的错误、故障、失效,可能引起不正确或非预期的结果,或破坏软件的正常运行。特别是在安全关键领域,软件缺陷可能造成巨大的经济损失或安全威胁,尽可能的降低软件缺陷来提高软件质量是业界一直追求的目标,而软件缺陷的自动化检测可以降低人工测试的成本,提高测试效率和质量,已成为软件测试中必不可少的手段。
传统的软件缺陷自动检测方法多数是基于程序分析来完成的,根据已有代码中发现的缺陷,将其总结为缺陷特征/模式,然后提出相应的检测算法。根据是否需要运行软件,一般可以分为静态检测方法与动态检测方法两类。静态检测方法由于不涉及被测软件的动态执行,并且可以在运行程序之前的早期阶段检测可能的缺陷而被广泛使用,但存在以下不足:1)自动检测的误报率高。目前静态检测方法是通过对程序的某种特性或某个层次进行建模分析,并没有综合利用代码不同维度的信息,误报率普遍在30%以上,大量的误报带来大量的人工审查成本,当误报率太高时会造成真正的缺陷淹没在检测结果中而无法实际应用;2)软件缺陷特征/模式需要人工提取,泛化性差。软件的缺陷通常与触发缺陷的场景、代码上下文密切相关,人工提取的缺陷特征完全依赖软件测试人员具备的先验知识,泛化能力弱,从而也造成了可检测的缺陷类型难以扩展。
发明内容
本发明解决的技术问题是:克服现有技术的不足,提供了一种图神经网络模型训练方法、软件缺陷检测方法及系统。
为了解决上述技术问题,本发明实施例提供了一种图神经网络模型训练方法,包括:
根据构建的软件缺陷数据集,获取用于进行图神经网络模型训练的训练软件函数,及用于图神经网络模型训练的测试软件函数,所述训练软件函数和所述测试软件函数预先标注有初始缺陷数据;
根据所述训练软件函数对应的多维代码属性,构建所述训练软件函数对应的初始多维代码属性图,并根据所述测试软件函数对应的多维代码属性,构建所述测试软件函数对应的目标多维代码属性图;
基于所述初始多维代码属性图对初始图神经网络模型进行训练,得到训练后的图神经网络模型;
基于所述目标多维代码属性图对所述训练后的图神经网络模型进行测试,获取由所述训练后的图神经网络模型输出所述测试软件函数对应的预测缺陷数据;
在所述初始缺陷数据和所述预测缺陷数据匹配的情况下,将所述训练后的图神经网络模型作为最终的目标图神经网络模型。
可选地,所述根据所述训练软件函数对应的多维代码属性,构建所述训练软件函数对应的初始多维代码属性图,并根据所述测试软件函数对应的多维代码属性,构建所述测试软件函数对应的目标多维代码属性图,包括:
根据所述训练软件函数的源代码对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息,构建得到所述初始多维代码属性图;
根据所述测试软件函数的源代码对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息,构建得到所述目标多维代码属性图。
可选地,所述基于所述初始多维代码属性图对初始图神经网络模型进行训练,得到训练后的图神经网络模型,包括:
根据所述初始多维代码属性图中的图节点,确定所述图节点对应的节点向量;所述图节点包括所述训练软件函数的源代码和源代码类型;
根据所述初始多维代码属性图中的各条边,确定各条边对应的边向量;所述边包括边的类型和类型的属性值;
将所述节点向量和所述边向量输入至所述初始图神经网络模型,以对所述初始图神经网络模型进行训练,得到所述训练后的图神经网络模型。
可选地,所述基于所述目标多维代码属性图对所述训练后的图神经网络模型进行测试,包括:
根据所述目标多维代码属性图中的图节点,确定所述图节点对应的节点向量;所述图节点包括所述测试软件函数的源代码和源代码类型;
根据所述目标多维代码属性图中的各条边,确定各条边对应的边向量;所述边包括边的类型和类型的属性值;
将所述节点向量和所述边向量输入至所述训练后的图神经网络模型,以对所述训练后的图神经网络模型进行测试。
为了解决上述技术问题,本发明实施例还提供了一种软件缺陷检测方法,包括:
获取待测试软件函数;
根据所述待测试软件函数对应的多维代码属性,构建所述待测试软件函数对应的多维代码属性图;
将所述多维代码属性图输入至目标图神经网络模型,并获取由所述目标图神经网络模型输出的所述待测试软件函数对应的软件缺陷分类结果。
可选地,所述根据所述待测试软件函数对应的多维代码属性,构建所述待测试软件函数对应的多维代码属性图,包括:
根据所述待测试软件函数对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息,构建得到所述多维代码属性图。
可选地,所述将所述多维代码属性图输入至目标图神经网络模型,并获取由所述目标图神经网络模型输出的所述待测试软件函数对应的软件缺陷分类结果,包括:
根据所述多维代码属性图中的图节点,确定所述图节点对应的节点向量;所述图节点包括所述软件函数的源代码和源代码类型;
根据所述多维代码属性图中的各条边,确定各条边对应的边向量;所述边包括边的类型和类型的属性值;
将所述节点向量和所述边向量输入至所述目标图神经网络模型,并获取由所述目标图神经网络模型输出的所述待测试软件函数对应的软件缺陷分类结果。
为了解决上述技术问题,本发明实施例还提供了一种图神经网络模型训练系统,包括:
软件函数获取模块,用于根据构建的软件缺陷数据集,获取用于进行图神经网络模型训练的训练软件函数,及用于图神经网络模型训练的测试软件函数,所述训练软件函数和所述测试软件函数预先标注有初始缺陷数据;
多维代码属性图构建模块,用于根据所述训练软件函数对应的多维代码属性,构建所述训练软件函数对应的初始多维代码属性图,并根据所述测试软件函数对应的多维代码属性,构建所述测试软件函数对应的目标多维代码属性图;
训练图网络获取模块,用于基于所述初始多维代码属性图对初始图神经网络模型进行训练,得到训练后的图神经网络模型;
预测缺陷数据获取模块,用于基于所述目标多维代码属性图对所述训练后的图神经网络模型进行测试,获取由所述训练后的图神经网络模型输出所述测试软件函数对应的预测缺陷数据;
目标图网络获取模块,用于在所述初始缺陷数据和所述预测缺陷数据匹配的情况下,将所述训练后的图神经网络模型作为最终的目标图神经网络模型。
可选地,所述多维代码属性图构建模块包括:
初始属性图构建单元,用于根据所述训练软件函数的源代码对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息,构建得到所述初始多维代码属性图;
目标属性图构建单元,用于根据所述测试软件函数的源代码对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息,构建得到所述目标多维代码属性图。
可选地,所述训练图网络获取模块包括:
初始节点向量确定单元,用于根据所述初始多维代码属性图中的图节点,确定所述图节点对应的节点向量;所述图节点包括所述训练软件函数的源代码和源代码类型;
初始边向量确定单元,用于根据所述初始多维代码属性图中的各条边,确定各条边对应的边向量;所述边包括边的类型和类型的属性值;
初始向量输入单元,用于将所述节点向量和所述边向量输入至所述初始图神经网络模型,以对所述初始图神经网络模型进行训练,得到所述训练后的图神经网络模型。
可选地,所述预测缺陷数据获取模块包括:
目标节点向量确定单元,用于根据所述目标多维代码属性图中的图节点,确定所述图节点对应的节点向量;所述图节点包括所述测试软件函数的源代码和源代码类型;
目标边向量确定单元,用于根据所述目标多维代码属性图中的各条边,确定各条边对应的边向量;所述边包括边的类型和类型的属性值;
目标向量输入单元,用于将所述节点向量和所述边向量输入至所述训练后的图神经网络模型,以对所述训练后的图神经网络模型进行测试。
为了解决上述技术问题,本发明实施例还提供了一种软件缺陷检测系统,包括:
待测试软件获取模块,用于获取待测试软件函数;
代码属性图构建模块,用于根据所述待测试软件函数对应的多维代码属性,构建所述待测试软件函数对应的多维代码属性图;
软件缺陷结果获取模块,用于将所述多维代码属性图输入至目标图神经网络模型,并获取由所述目标图神经网络模型输出的所述待测试软件函数对应的软件缺陷分类结果。
可选地,所述代码属性图构建模块包括:
代码属性图构建单元,用于根据所述待测试软件函数对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息,构建得到所述多维代码属性图。
可选地,所述软件缺陷结果获取模块包括:
节点向量确定单元,用于根据所述多维代码属性图中的图节点,确定所述图节点对应的节点向量;所述图节点包括所述软件函数的源代码和源代码类型;
边向量确定单元,用于根据所述多维代码属性图中的各条边,确定各条边对应的边向量;所述边包括边的类型和类型的属性值;
向量输入单元,用于将所述节点向量和所述边向量输入至所述目标图神经网络模型,并获取由所述目标图神经网络模型输出的所述待测试软件函数对应的软件缺陷分类结果。
本发明与现有技术相比的优点在于:本发明实施例充分融合利用了软件代码的多维属性,可以降低代码属性信息不全面造成的缺陷检测高误报率。与利用单一代码属性的静态程序分析方法相比,本方法利用了抽象语法树AST、数据流图CFG、程序依赖图PDG、函数调用图FCG四个维度代码的属性,充分融合了静态代码结构信息、控制流信息、控制依赖和数据依赖信息、函数调用信息,全面保留了代码的语法和语义信息,因此,提高了检测精度,减少了可能的误报。可以减少软件测试人员依据先验知识对缺陷特征进行人工提取的过程,比较容易扩展更多缺陷类型的检测,泛化能力较强。其他检测方法通过对程序扫描匹配某种模式来查找缺陷严重依赖于人工对缺陷特征的提取,人工提取的缺陷特征敏感度高,特征发生细微变化时可能对检测造成漏报或误报,而实际的软件缺陷可能是某种特征的变种,传统的检测方法缺少这种“举一反三”的缺陷变种分析能力,通用性较差。利用图神经网络对软件缺陷特征提取,减少了人工干预的过程,并可以通过训练对特征进行泛化,对可检测的缺陷类型容易扩展。
附图说明
图1为本发明实施例提供的一种图神经网络模型训练方法的步骤流程图;
图2为本发明实施例提供的一种软件缺陷检测方法的步骤流程图;
图3为本发明实施例提供的一种图神经网络模型训练系统的结构示意图;
图4为本发明实施例提供的一种软件缺陷检测系统的结构示意图。
具体实施方式
实施例一
参照图1,示出了本发明实施例提供的一种图神经网络模型训练方法的步骤流程图,如图1所示,该图神经网络模型训练方法具体可以包括如下步骤:
步骤101:根据构建的软件缺陷数据集,获取用于进行图神经网络模型训练的训练软件函数,及用于图神经网络模型训练的测试软件函数,所述训练软件函数和所述测试软件函数预先标注有初始缺陷数据。
本发明实施例可以应用于对用于进行软件缺陷检测的图神经网络模型训练的场景中。
软件缺陷数据集是指结合预先获取的存在缺陷的软件函数构建的数据集合,对于软件缺陷数据集的构建过程可以为:1、选取宇航级软件第三方评测机构的软件资产库作为数据来源,从中检出配置项源代码,使用静态分析工具SpecChecker进行静态扫描与分析,得到工具自动检出的软件缺陷;2、第三方测试人员结合工具检出的软件缺陷对源代码进行人工代码审查和动态测试,筛查过滤工具误报的缺陷和检出工具漏报的缺陷,其中工具漏报的缺陷检出来源于人工代码审查和动态测试;3、对可能的软件缺陷进行人工标注,集合B(possible)为静态分析工具检测出的软件可能缺陷集合,集合B(FP)为工具误报的软件缺陷集合,集合B(TP)为工具正确检出的软件缺陷集合:B(possible)=B(FP)B(TP),集合B(FN)为工具漏报但通过人工代码审查和动态测试发现的缺陷,人工标注的缺陷集合B(labeled)=B(TP)B(FN),标注信息为软件缺陷的类型和所对应的代码行。
在构建得到软件缺陷数据集之后,可以根据构建的软件缺陷数据集获取用于进行图神经网络模型训练的训练软件函数,以及用于图神经网络模型训练的测试软件函数,其中,训练软件函数和测试软件函数均预先标注有初始缺陷数据。
在获取到训练软件函数和测试软件函数之后,执行步骤102。
步骤102:根据所述训练软件函数对应的多维代码属性,构建所述训练软件函数对应的初始多维代码属性图,并根据所述测试软件函数对应的多维代码属性,构建所述测试软件函数对应的目标多维代码属性图。
在获取到训练软件函数和测试软件函数之后,可以根据训练软件函数对应的多维代码属性,构建得到训练软件函数对应的初始多维代码属性图,并根据测试软件函数对应的多维代码属性,构建得到测试软件函数对应的目标多维代码属性图,具体地,可以结合下述具体实现方式进行详细描述。
在本发明的一种具体实现方式中,上述步骤102可以包括:
子步骤A1:根据所述训练软件函数的源代码对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息,构建得到所述初始多维代码属性图;
子步骤A2:根据所述测试软件函数的源代码对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息,构建得到所述目标多维代码属性图。
在本实施例中,可以结合软件函数源代码的静态结构信息、控制流信息、变量的传递信息和函数调用信息四个维度的代码属性,构建多维代码属性图。
在获取训练软件函数之后,可以根据训练软件函数的源代码对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息构建得到初始多维代码属性图。
而在获取测试软件函数之后,可以根据测试软件函数的源代码对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息构建得到目标多维代码属性图。
在现有的基于静态分析的软件缺陷检测方法中,对源代码进行处理后利用的是静态结构信息、控制流信息、数据流信息等某一维度的属性,缺少对多种维度属性信息的融合利用,代码属性信息不全面会影响缺陷检测分析精度,本步骤通过对源代码P的处理构建抽象语法树AST(Abstract Syntax Tree),控制流图CFG(Control Flow Graph),程序依赖图PDG(Program Dependence Graph),函数调用图FCG(Function Call Graph),获得代码的静态结构信息、控制流信息、变量的传递信息和函数调用信息四个维度的代码属性,然后采用一种统一的四元组融合四个维度的信息来表示多维代码属性图,以抽象语法树作为代码属性图的第一维信息基础上不断叠加3种代码属性构建多维代码属性图。具体地过程可以为:1、对源代码P进行词法分析和语法分析获得表征代码静态结构信息的抽象语法树AST;2、根据源代码语言的基本语句结构和语法规则获得表征代码控制流信息的控制流图CFG;3、以控制流图为基础,对源代码P进行数据流分析,去掉CFG的控制流边,加入数据和控制流边,获得表征变量依赖关系和语句执行约束关系的数据依赖和控制依赖,共同构成程序依赖图PDG;4、根据源代码P中各个函数的调用关系获得表征函数调用信息的函数调用图FCG。
为了将程序源代码P的上述四个维度的代码属性进行融合,采用一种统一的四元组表示多维度代码属性图G={Vi,Ei,Vi(P),Ei(P)},其中i=1,2,3,4,分别代表静态结构信息、控制流信息、变量的传递信息和函数调用信息四个维度,Vi是多维代码属性图G的节点集,表示代码在i维度的节点元素,Ei是多维代码属性图G的边集,表示代码在i维度所关联的边,Vi(P)表示表示节点集在i维度的属性集,Ei(P)表示边集在在i维度的属性集。对多维度代码属性图G构建的具体过程为:
将源代码P的抽象语法树AST作为多维度代码属性图G的第1维代码信息,后面3种代码属性在此基础上进行叠加;
在抽象语法树AST基础上,利用控制流图CFG在语句之间添加控制流边,得到第2维度代码信息;
利用程序依赖图PDG分析函数内的数据依赖和控制依赖,添加相应的依赖边,得到第3维度代码信息;
搜索各函数调用点的函数定义对应的AST根节点,添加函数调用边及参数,得到第4维度代码信息;
通过上述过程可以获得具有4个维度信息的代码属性图G。
在获取到初始多维代码属性图和目标多维代码属性图之后,执行步骤103。
步骤103:基于所述初始多维代码属性图对初始图神经网络模型进行训练,得到训练后的图神经网络模型。
在获取到初始多维代码属性图之后,可以基于初始多维代码属性图对初始图神经网络模型进行训练,以得到训练后的图神经网络模型,具体地,可以结合下述具体实现方式进行详细描述。
在本发明的另一种具体实现方式中,上述步骤103可以包括:
子步骤B1:根据所述初始多维代码属性图中的图节点,确定所述图节点对应的节点向量;所述图节点包括所述训练软件函数的源代码和源代码类型;
子步骤B2:根据所述初始多维代码属性图中的各条边,确定各条边对应的边向量;所述边包括边的类型和类型的属性值;
子步骤B3:将所述节点向量和所述边向量输入至所述初始图神经网络模型,以对所述初始图神经网络模型进行训练,得到所述训练后的图神经网络模型。
在本发明实施例中,根据构建的初始多维代码属性图是一个有向边标签化、节点属性化的重边图,为了便于对初始多维代码属性图进行数据处理和分析,需要将该图进行向量化表示。包括初始多维代码属性图中节点的向量化表示和多维代码属性图中边的向量化表示。
初始多维代码属性图中节点包含源代码和代码类型两部分内容,针对节点中的源代码采用Word2Vector工具将其转化为向量表示,针对代码类型可以根据整个软件源码中包含的所有代码类型采用独热编码进行向量化。具体地,将整个软件源代码解析成标记流,将该标记流集合作为Word2Vector语料库的输入,利用Word2Vector构造标记的词典,然后将多维代码属性图中每个节点中的源代码查询词典替换为对应的词向量以得到该节点代码的向量表示;将多维代码属性图中涉及的全部代码类型进行独热编码,形成代码类型的独热编码表,然后每个节点中的代码类型查询代码类型编码表,获得该节点代码类型的向量表示。
边的类型包括AST边、CFG边、PDG边和FCG边四类,图中任意两个节点的连接关系可以用一个四位编码的向量表示,每一位通过0和1表示两节点间是否存在某种类型的边,若两个节点之间不存在任何边的连接,则用0000表示,若两个节点之间存在CFG和PDG两种类型的边,则可以用0110表示,由此类推。上述四类边的属性值集合各不相同,对于AST边的属性值集合为空,标记为{φ};对于CFG边的属性值集合为{ε,false,true},ε表示无条件执行下一个节点,false表示条件为假时执行下一个节点,true表示条件为真时执行下一个节点;对于PDG边的属性值集合为{Dvar,Ccondition},Dvar表示下一个节点数据依赖于var的值,Ccondition表示下一个节点控制依赖于条件condition的值;对于FCG边的属性值集合为空,标记为{φ}。两个节点之间边类型的属性值也可以用一个四位编码的向量表示,如[φ,false,Dvar,φ]。
初始多维代码属性图中的边包含边的类型和类型的属性值两部分内容,可以分别对这两部分进行向量化表示。
在分别获取初始多维代码属性图中的图节点的节点向量和各条边的边向量之后,可以将节点向量和边向量输入至初始图神经网络模型,以对初始图神经网络模型进行训练,以得到训练后的图神经网络模型,具体地,得到训练软件函数的多维代码属性图向量化表示,将多维代码属性图向量表示及其标签作为图神经网络的输入,通过调整模型参数,包括优化器、学习率、批量大小、网络层数、卷积核大小等调节软件缺陷特征学习模型的参数。模型使用网格搜索法进行调参,该方法通过穷举搜索得到上述参数的最优组合值。调参结束后,从训练好的模型可以得到软件缺陷特征向量,进而获得一个参数训练完备的软件缺陷检测器。
步骤104:基于所述目标多维代码属性图对所述训练后的图神经网络模型进行测试,获取由所述训练后的图神经网络模型输出所述测试软件函数对应的预测缺陷数据。
在得到训练后的图神经网络模型之后,可以基于目标多维代码属性图对训练后的图神经网络模型进行测试,以获取由训练后的图神经网络模型输出的测试软件函数对应的预测缺陷函数,具体地,可以结合下述具体实现方式进行如下详细描述。
在本发明的另一种具体实现方式中,上述步骤104可以包括:
子步骤C1:根据所述目标多维代码属性图中的图节点,确定所述图节点对应的节点向量;所述图节点包括所述测试软件函数的源代码和源代码类型;
子步骤C2:根据所述目标多维代码属性图中的各条边,确定各条边对应的边向量;所述边包括边的类型和类型的属性值;
子步骤C3:将所述节点向量和所述边向量输入至所述训练后的图神经网络模型,以对所述训练后的图神经网络模型进行测试。
在本发明实施例中,在构建得到目标多维代码属性图之后,可以根据目标多维代码属性图中的图节点,获取到节点向量,并根据目标多维代码属性图中的各条边,获取各条边对应的边向量,进而可以将节点向量和边向量输入至训练后的图神经网络模型,以对训练后的图神经网络模型进行测试。
在获取由训练后的图神经网络模型输出的测试软件函数对应的预测缺陷数据之后,执行步骤105。
步骤105:在所述初始缺陷数据和所述预测缺陷数据匹配的情况下,将所述训练后的图神经网络模型作为最终的目标图神经网络模型。
本发明中设计的基于图神经网络的软件缺陷检测器检测结果并不是简单的缺陷二分类,而是可以检测出具体的缺陷类型,为了验证检测器的检测效果,可以采用多种类型缺陷的加权平均误报率W-FPR、加权平均漏报率W-FNR和加权平均F1指数W-F1来评估,计算公式分别为:
其中,集合L是数据集中所有的缺陷类型,集合X是待测试数据集合,l是某一类缺陷类型,带l下标的公式代表针对该缺陷类型的操作。TPl表示实际为l类型缺陷且被检测为l类型缺陷的数目,FPl表示实际无缺陷但被检测为l类型缺陷的数目(即误报);FNl表示实际为l类型缺陷但被检测为不是缺陷的数目(即漏报);TNl表示实际无缺陷但被检测为不是缺陷的数目,Xl表示l类型缺陷的样本数目。和/>分为l类型缺陷的精确率和召回率。
本发明实施例利用了抽象语法树AST、数据流图CFG、程序依赖图PDG、函数调用图FCG四个维度代码的属性,充分融合了静态代码结构信息、控制流信息、控制依赖和数据依赖信息、函数调用信息,全面保留了代码的语法和语义信息,因此,提高了检测精度,减少了可能的误报。
实施例二
参照图2,示出了本发明实施例提供的一种软件缺陷检测方法的步骤流程图,如图2所示,该软件缺陷检测方法具体可以包括如下步骤:
步骤201:获取待测试软件函数。
本发明实施例可以应用于对待测试软件函数的缺陷进行预测的场景中。
待测试软件函数是指需要进行软件缺陷预测的软件函数。
在某些示例中,待测试软件函数可以为研发人员当前编写完成的软件函数,例如,在研发人员编写完一个代码模块之后,需要对该代码模块进行测试,此时,可以将该代码模块作为待测试软件函数。
在某些示例中,待测试软件函数可以为业务人员从软件函数仓库中获取的软件函数等。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
在获取待测试软件函数之后,执行步骤202。
步骤202:根据所述待测试软件函数对应的多维代码属性,构建所述待测试软件函数对应的多维代码属性图。
在获取待测试软件函数之后,可以根据待测试软件函数对应的多维代码属性,构建得到待测试软件函数对应的多维代码属性图,具体地,可以结合下述具体实现方式进行如下详细描述。
在本发明的一种具体实现方式中,上述步骤202可以包括:
子步骤D1:根据所述待测试软件函数对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息,构建得到所述多维代码属性图。
在本实施例中,在获取待测试软件函数之后,可以根据待测试软件函数对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息四个维度的代码属性,构建得到多维代码属性图,具体地,获取待测试软件函数源代码的静态结构信息、控制流信息、变量的传递信息和函数调用信息四个维度的代码属性,然后采用一种统一的四元组融合四个维度的信息来表示多维代码属性图,以抽象语法树作为代码属性图的第一维信息基础上不断叠加3种代码属性构建多维代码属性图。
在构建得到多维代码属性图之后,执行步骤203。
步骤203:将所述多维代码属性图输入至目标图神经网络模型,并获取由所述目标图神经网络模型输出的所述待测试软件函数对应的软件缺陷分类结果。
在构建得到多维代码属性图之后,可以将多维代码属性图输入至目标图神经网络模型,并获取由目标图神经网络模型输出的待测试软件函数对应的软件缺陷分类结果,具体地,可以结合下述具体实现方式进行如下详细描述。
在本发明的另一种具体实现方式中,上述步骤203可以包括:
子步骤E1:根据所述多维代码属性图中的图节点,确定所述图节点对应的节点向量;所述图节点包括所述软件函数的源代码和源代码类型;
子步骤E2:根据所述多维代码属性图中的各条边,确定各条边对应的边向量;所述边包括边的类型和类型的属性值;
子步骤E3:将所述节点向量和所述边向量输入至所述目标图神经网络模型,并获取由所述目标图神经网络模型输出的所述待测试软件函数对应的软件缺陷分类结果。
在本发明实施例中,在构建得到多维代码属性图之后,可以获待测试软件该函数的多维代码属性图向量化表示,将多维代码属性图向量表示作为检测器的输入,检测器处理后将得到该输入的软件缺陷分类结果。采用多种类型缺陷的加权平均误报率、加权平均漏报率和加权平均指数来评估检测器缺陷检测的效果。
本发明实施例利用了抽象语法树AST、数据流图CFG、程序依赖图PDG、函数调用图FCG四个维度代码的属性,充分融合了静态代码结构信息、控制流信息、控制依赖和数据依赖信息、函数调用信息,全面保留了代码的语法和语义信息,因此,提高了检测精度,减少了可能的误报。
实施例三
参照图3,示出了本发明实施例提供的一种图神经网络模型训练系统的结构示意图,如图3所示,该图神经网络模型训练系统300具体可以包括如下模块:
软件函数获取模块310,用于根据构建的软件缺陷数据集,获取用于进行图神经网络模型训练的训练软件函数,及用于图神经网络模型训练的测试软件函数,所述训练软件函数和所述测试软件函数预先标注有初始缺陷数据;
多维代码属性图构建模块320,用于根据所述训练软件函数对应的多维代码属性,构建所述训练软件函数对应的初始多维代码属性图,并根据所述测试软件函数对应的多维代码属性,构建所述测试软件函数对应的目标多维代码属性图;
训练图网络获取模块330,用于基于所述初始多维代码属性图对初始图神经网络模型进行训练,得到训练后的图神经网络模型;
预测缺陷数据获取模块340,用于基于所述目标多维代码属性图对所述训练后的图神经网络模型进行测试,获取由所述训练后的图神经网络模型输出所述测试软件函数对应的预测缺陷数据;
目标图网络获取模块350,用于在所述初始缺陷数据和所述预测缺陷数据匹配的情况下,将所述训练后的图神经网络模型作为最终的目标图神经网络模型。
可选地,所述多维代码属性图构建模块320包括:
初始属性图构建单元,用于根据所述训练软件函数的源代码对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息,构建得到所述初始多维代码属性图;
目标属性图构建单元,用于根据所述测试软件函数的源代码对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息,构建得到所述目标多维代码属性图。
可选地,所述训练图网络获取模块330包括:
初始节点向量确定单元,用于根据所述初始多维代码属性图中的图节点,确定所述图节点对应的节点向量;所述图节点包括所述训练软件函数的源代码和源代码类型;
初始边向量确定单元,用于根据所述初始多维代码属性图中的各条边,确定各条边对应的边向量;所述边包括边的类型和类型的属性值;
初始向量输入单元,用于将所述节点向量和所述边向量输入至所述初始图神经网络模型,以对所述初始图神经网络模型进行训练,得到所述训练后的图神经网络模型。
可选地,所述预测缺陷数据获取模块340包括:
目标节点向量确定单元,用于根据所述目标多维代码属性图中的图节点,确定所述图节点对应的节点向量;所述图节点包括所述测试软件函数的源代码和源代码类型;
目标边向量确定单元,用于根据所述目标多维代码属性图中的各条边,确定各条边对应的边向量;所述边包括边的类型和类型的属性值;
目标向量输入单元,用于将所述节点向量和所述边向量输入至所述训练后的图神经网络模型,以对所述训练后的图神经网络模型进行测试。
实施例四
参照图4,示出了本发明实施例提供的一种软件缺陷检测系统的结构示意图,如图4所示,该软件缺陷检测系统400具体可以包括如下模块:
待测试软件获取模块410,用于获取待测试软件函数;
代码属性图构建模块420,用于根据所述待测试软件函数对应的多维代码属性,构建所述待测试软件函数对应的多维代码属性图;
软件缺陷结果获取模块430,用于将所述多维代码属性图输入至目标图神经网络模型,并获取由所述目标图神经网络模型输出的所述待测试软件函数对应的软件缺陷分类结果。
可选地,所述代码属性图构建模块420包括:
代码属性图构建单元,用于根据所述待测试软件函数对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息,构建得到所述多维代码属性图。
可选地,所述软件缺陷结果获取模块430包括:
节点向量确定单元,用于根据所述多维代码属性图中的图节点,确定所述图节点对应的节点向量;所述图节点包括所述软件函数的源代码和源代码类型;
边向量确定单元,用于根据所述多维代码属性图中的各条边,确定各条边对应的边向量;所述边包括边的类型和类型的属性值;
向量输入单元,用于将所述节点向量和所述边向量输入至所述目标图神经网络模型,并获取由所述目标图神经网络模型输出的所述待测试软件函数对应的软件缺陷分类结果。
以上所述,仅为本发明最佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。
Claims (4)
1.一种图神经网络模型训练方法,其特征在于,包括:
根据构建的软件缺陷数据集,获取用于进行图神经网络模型训练的训练软件函数,及用于图神经网络模型训练的测试软件函数,所述训练软件函数和所述测试软件函数预先标注有初始缺陷数据;
根据所述训练软件函数对应的多维代码属性,构建所述训练软件函数对应的初始多维代码属性图,并根据所述测试软件函数对应的多维代码属性,构建所述测试软件函数对应的目标多维代码属性图;
基于所述初始多维代码属性图对初始图神经网络模型进行训练,得到训练后的图神经网络模型;
基于所述目标多维代码属性图对所述训练后的图神经网络模型进行测试,获取由所述训练后的图神经网络模型输出所述测试软件函数对应的预测缺陷数据;
在所述初始缺陷数据和所述预测缺陷数据匹配的情况下,将所述训练后的图神经网络模型作为最终的目标图神经网络模型;
所述根据所述训练软件函数对应的多维代码属性,构建所述训练软件函数对应的初始多维代码属性图,并根据所述测试软件函数对应的多维代码属性,构建所述测试软件函数对应的目标多维代码属性图,包括:
根据所述训练软件函数的源代码对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息,构建得到所述初始多维代码属性图;
根据所述测试软件函数的源代码对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息,构建得到所述目标多维代码属性图;
具体为:采用统一的四元组表示多维度代码属性图G={Vi,Ei,Vi(P),Ei(P)},其中i=1,2,3,4,分别代表静态结构信息、控制流信息、变量的传递信息和函数调用信息四个维度,Vi是多维代码属性图G的节点集,表示代码在i维度的节点元素,Ei是多维代码属性图G的边集,表示代码在i维度所关联的边,Vi(P)表示表示节点集在i维度的属性集,Ei(P)表示边集在在i维度的属性集;
对多维度代码属性图G构建的具体过程为:
将源代码P的抽象语法树AST作为多维度代码属性图G的第1维代码信息,后面3种代码属性在此基础上进行叠加;
在抽象语法树AST基础上,利用控制流图CFG在语句之间添加控制流边,得到第2维度代码信息;
利用程序依赖图PDG分析函数内的数据依赖和控制依赖,添加相应的依赖边,得到第3维度代码信息;
搜索各函数调用点的函数定义对应的AST根节点,添加函数调用边及参数,得到第4维度代码信息;
通过上述过程获得具有4个维度信息的代码属性图G;所述基于所述初始多维代码属性图对初始图神经网络模型进行训练,得到训练后的图神经网络模型,包括:
根据所述初始多维代码属性图中的图节点,确定所述图节点对应的节点向量;所述图节点包括所述训练软件函数的源代码和源代码类型;
根据所述初始多维代码属性图中的各条边,确定各条边对应的边向量;所述边包括边的类型和类型的属性值;
将所述节点向量和所述边向量输入至所述初始图神经网络模型,以对所述初始图神经网络模型进行训练,得到所述训练后的图神经网络模型;
所述基于所述目标多维代码属性图对所述训练后的图神经网络模型进行测试,包括:
根据所述目标多维代码属性图中的图节点,确定所述图节点对应的节点向量;所述图节点包括所述测试软件函数的源代码和源代码类型;
根据所述目标多维代码属性图中的各条边,确定各条边对应的边向量;所述边包括边的类型和类型的属性值;
将所述节点向量和所述边向量输入至所述训练后的图神经网络模型,以对所述训练后的图神经网络模型进行测试;
边的类型包括AST边、CFG边、PDG边和FCG边四类,图中任意两个节点的连接关系用一个四位编码的向量表示,每一位通过0和1表示两节点间是否存在某种类型的边,若两个节点之间不存在任何边的连接,则用0000表示,若两个节点之间存在CFG和PDG两种类型的边,则用0110表示,由此类推;上述四类边的属性值集合各不相同,对于AST边的属性值集合为空,标记为{φ};对于CFG边的属性值集合为{ε,false,true},ε表示无条件执行下一个节点,false表示条件为假时执行下一个节点,true表示条件为真时执行下一个节点;对于PDG边的属性值集合为{Dvar,Ccondition},Dvar表示下一个节点数据依赖于var的值,Ccondition表示下一个节点控制依赖于条件condition的值;对于FCG边的属性值集合为空,标记为{φ};两个节点之间边类型的属性值用一个四位编码的向量[φ,false,Dvar,φ]表示。
2.一种基于权利要求1的图神经网络模型训练方法生成的图神经网络模型实现的软件缺陷检测方法,其特征在于,包括:
获取待测试软件函数;
根据所述待测试软件函数对应的多维代码属性,构建所述待测试软件函数对应的多维代码属性图;
将所述多维代码属性图输入至目标图神经网络模型,并获取由所述目标图神经网络模型输出的所述待测试软件函数对应的软件缺陷分类结果;
所述根据所述待测试软件函数对应的多维代码属性,构建所述待测试软件函数对应的多维代码属性图,包括:
根据所述待测试软件函数对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息,构建得到所述多维代码属性图;
所述将所述多维代码属性图输入至目标图神经网络模型,并获取由所述目标图神经网络模型输出的所述待测试软件函数对应的软件缺陷分类结果,包括:
根据所述多维代码属性图中的图节点,确定所述图节点对应的节点向量;所述图节点包括所述软件函数的源代码和源代码类型;
根据所述多维代码属性图中的各条边,确定各条边对应的边向量;所述边包括边的类型和类型的属性值;
将所述节点向量和所述边向量输入至所述目标图神经网络模型,并获取由所述目标图神经网络模型输出的所述待测试软件函数对应的软件缺陷分类结果。
3.一种图神经网络模型训练系统,其特征在于,包括:
软件函数获取模块,用于根据构建的软件缺陷数据集,获取用于进行图神经网络模型训练的训练软件函数,及用于图神经网络模型训练的测试软件函数,所述训练软件函数和测试软件函数预先标注有初始缺陷数据;
多维代码属性图构建模块,用于根据所述训练软件函数对应的多维代码属性,构建所述训练软件函数对应的初始多维代码属性图,并根据所述测试软件函数对应的多维代码属性,构建所述测试软件函数对应的目标多维代码属性图;
训练图网络获取模块,用于基于所述初始多维代码属性图对初始图神经网络模型进行训练,得到训练后的图神经网络模型;
预测缺陷数据获取模块,用于基于所述目标多维代码属性图对所述训练后的图神经网络模型进行测试,获取由所述训练后的图神经网络模型输出所述测试软件函数对应的预测缺陷数据;
目标图网络获取模块,用于在所述初始缺陷数据和所述预测缺陷数据匹配的情况下,将所述训练后的图神经网络模型作为最终的目标图神经网络模型;
所述多维代码属性图构建模块包括:
初始属性图构建单元,用于根据所述训练软件函数的源代码对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息,构建得到所述初始多维代码属性图;
目标属性图构建单元,用于根据所述测试软件函数的源代码对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息,构建得到所述目标多维代码属性图;
具体为:采用统一的四元组表示多维度代码属性图G={Vi,Ei,Vi(P),Ei(P)},其中i=1,2,3,4,分别代表静态结构信息、控制流信息、变量的传递信息和函数调用信息四个维度,Vi是多维代码属性图G的节点集,表示代码在i维度的节点元素,Ei是多维代码属性图G的边集,表示代码在i维度所关联的边,Vi(P)表示表示节点集在i维度的属性集,Ei(P)表示边集在在i维度的属性集;
对多维度代码属性图G构建的具体过程为:
将源代码P的抽象语法树AST作为多维度代码属性图G的第1维代码信息,后面3种代码属性在此基础上进行叠加;
在抽象语法树AST基础上,利用控制流图CFG在语句之间添加控制流边,得到第2维度代码信息;
利用程序依赖图PDG分析函数内的数据依赖和控制依赖,添加相应的依赖边,得到第3维度代码信息;
搜索各函数调用点的函数定义对应的AST根节点,添加函数调用边及参数,得到第4维度代码信息;
通过上述过程获得具有4个维度信息的代码属性图G;
所述训练图网络获取模块包括:
初始节点向量确定单元,用于根据所述初始多维代码属性图中的图节点,确定所述图节点对应的节点向量;所述图节点包括所述训练软件函数的源代码和源代码类型;
初始边向量确定单元,用于根据所述初始多维代码属性图中的各条边,确定各条边对应的边向量;所述边包括边的类型和类型的属性值;
初始向量输入单元,用于将所述节点向量和所述边向量输入至所述初始图神经网络模型,以对所述初始图神经网络模型进行训练,得到所述训练后的图神经网络模型;
所述预测缺陷数据获取模块包括:
目标节点向量确定单元,用于根据所述目标多维代码属性图中的图节点,确定所述图节点对应的节点向量;所述图节点包括所述测试软件函数的源代码和源代码类型;
目标边向量确定单元,用于根据所述目标多维代码属性图中的各条边,确定各条边对应的边向量;所述边包括边的类型和类型的属性值;
目标向量输入单元,用于将所述节点向量和所述边向量输入至所述训练后的图神经网络模型,以对所述训练后的图神经网络模型进行测试;
边的类型包括AST边、CFG边、PDG边和FCG边四类,图中任意两个节点的连接关系用一个四位编码的向量表示,每一位通过0和1表示两节点间是否存在某种类型的边,若两个节点之间不存在任何边的连接,则用0000表示,若两个节点之间存在CFG和PDG两种类型的边,则用0110表示,由此类推;上述四类边的属性值集合各不相同,对于AST边的属性值集合为空,标记为{φ};对于CFG边的属性值集合为{ε,false,true},ε表示无条件执行下一个节点,false表示条件为假时执行下一个节点,true表示条件为真时执行下一个节点;对于PDG边的属性值集合为{Dvar,Ccondition},Dvar表示下一个节点数据依赖于var的值,Ccondition表示下一个节点控制依赖于条件condition的值;对于FCG边的属性值集合为空,标记为{φ};两个节点之间边类型的属性值用一个四位编码的向量[φ,false,Dvar,φ]表示。
4.一种基于权利要求1的图神经网络模型训练方法生成的图神经网络模型实现的软件缺陷测试系统,其特征在于,包括:
待测试软件获取模块,用于获取待测试软件函数;
代码属性图构建模块,用于根据所述待测试软件函数对应的多维代码属性,构建所述待测试软件函数对应的多维代码属性图;
软件缺陷结果获取模块,用于将所述多维代码属性图输入至目标图神经网络模型,并获取由所述目标图神经网络模型输出的所述待测试软件函数对应的软件缺陷分类结果;
所述代码属性图构建模块包括:
代码属性图构建单元,用于根据所述待测试软件函数对应的静态结构信息、控制流信息、变量的传递信息和函数调用信息,构建得到所述多维代码属性图;
所述软件缺陷结果获取模块包括:
节点向量确定单元,用于根据所述多维代码属性图中的图节点,确定所述图节点对应的节点向量;所述图节点包括所述软件函数的源代码和源代码类型;
边向量确定单元,用于根据所述多维代码属性图中的各条边,确定各条边对应的边向量;所述边包括边的类型和类型的属性值;
向量输入单元,用于将所述节点向量和所述边向量输入至所述目标图神经网络模型,并获取由所述目标图神经网络模型输出的所述待测试软件函数对应的软件缺陷分类结果;
边的类型包括AST边、CFG边、PDG边和FCG边四类,图中任意两个节点的连接关系用一个四位编码的向量表示,每一位通过0和1表示两节点间是否存在某种类型的边,若两个节点之间不存在任何边的连接,则用0000表示,若两个节点之间存在CFG和PDG两种类型的边,则用0110表示,由此类推;上述四类边的属性值集合各不相同,对于AST边的属性值集合为空,标记为{φ};对于CFG边的属性值集合为{ε,false,true},ε表示无条件执行下一个节点,false表示条件为假时执行下一个节点,true表示条件为真时执行下一个节点;对于PDG边的属性值集合为{Dvar,Ccondition},Dvar表示下一个节点数据依赖于var的值,Ccondition表示下一个节点控制依赖于条件condition的值;对于FCG边的属性值集合为空,标记为{φ};两个节点之间边类型的属性值用一个四位编码的向量[φ,false,Dvar,φ]表示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011286945.6A CN112288079B (zh) | 2020-11-17 | 2020-11-17 | 图神经网络模型训练方法、软件缺陷检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011286945.6A CN112288079B (zh) | 2020-11-17 | 2020-11-17 | 图神经网络模型训练方法、软件缺陷检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112288079A CN112288079A (zh) | 2021-01-29 |
CN112288079B true CN112288079B (zh) | 2024-05-14 |
Family
ID=74399583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011286945.6A Active CN112288079B (zh) | 2020-11-17 | 2020-11-17 | 图神经网络模型训练方法、软件缺陷检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112288079B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112884732B (zh) * | 2021-02-07 | 2023-09-26 | 常州大学 | 一种基于图网络注意力机制的无监督缺陷提取方法及装置 |
CN112597063B (zh) * | 2021-02-26 | 2021-06-08 | 北京北大软件工程股份有限公司 | 缺陷代码定位的方法、装置以及存储介质 |
CN113095870B (zh) * | 2021-03-16 | 2022-05-27 | 支付宝(杭州)信息技术有限公司 | 一种预测方法、装置、计算机设备以及存储介质 |
CN113138924B (zh) * | 2021-04-23 | 2023-10-31 | 扬州大学 | 一种基于图学习的线程安全代码识别方法 |
CN114896138B (zh) * | 2022-03-31 | 2023-03-24 | 西南民族大学 | 一种基于复杂网络和图神经网络的软件缺陷预测方法 |
CN114936158B (zh) * | 2022-05-28 | 2024-06-04 | 南通大学 | 一种基于图卷积神经网络的软件缺陷定位方法 |
CN115827496A (zh) * | 2023-02-13 | 2023-03-21 | 北京邮电大学 | 代码的异常检测方法、装置、电子设备及存储介质 |
CN116048708B (zh) * | 2023-03-31 | 2024-02-23 | 成都齐之之知识产权运营有限公司 | 基于人工智能的软件窗口调整方法、系统、设备和介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109977205A (zh) * | 2019-03-08 | 2019-07-05 | 中南大学 | 一种计算机自主学习源代码的方法 |
CN110597735A (zh) * | 2019-09-25 | 2019-12-20 | 北京航空航天大学 | 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法 |
GB201917161D0 (en) * | 2019-08-23 | 2020-01-08 | Praetorian | System and method for automatically detecting a security vulnerability in a source code using a machine learning model |
CN111259394A (zh) * | 2020-01-15 | 2020-06-09 | 中山大学 | 一种基于图神经网络的细粒度源代码漏洞检测方法 |
CN111274134A (zh) * | 2020-01-17 | 2020-06-12 | 扬州大学 | 基于图神经网络的漏洞识别与预测方法、系统、计算机设备和存储介质 |
CN111460450A (zh) * | 2020-03-11 | 2020-07-28 | 西北大学 | 一种基于图卷积网络的源代码漏洞检测方法 |
CN111506504A (zh) * | 2020-04-13 | 2020-08-07 | 扬州大学 | 基于软件开发过程度量的软件安全性缺陷预测方法及装置 |
CN111783100A (zh) * | 2020-06-22 | 2020-10-16 | 哈尔滨工业大学 | 基于图卷积网络对代码图表示学习的源代码漏洞检测方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10929722B2 (en) * | 2017-05-19 | 2021-02-23 | Nec Corporation | Anomaly detection in streaming networks |
US11003568B2 (en) * | 2018-09-22 | 2021-05-11 | Manhattan Engineering Incorporated | Error recovery |
-
2020
- 2020-11-17 CN CN202011286945.6A patent/CN112288079B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109977205A (zh) * | 2019-03-08 | 2019-07-05 | 中南大学 | 一种计算机自主学习源代码的方法 |
GB201917161D0 (en) * | 2019-08-23 | 2020-01-08 | Praetorian | System and method for automatically detecting a security vulnerability in a source code using a machine learning model |
CN110597735A (zh) * | 2019-09-25 | 2019-12-20 | 北京航空航天大学 | 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法 |
CN111259394A (zh) * | 2020-01-15 | 2020-06-09 | 中山大学 | 一种基于图神经网络的细粒度源代码漏洞检测方法 |
CN111274134A (zh) * | 2020-01-17 | 2020-06-12 | 扬州大学 | 基于图神经网络的漏洞识别与预测方法、系统、计算机设备和存储介质 |
CN111460450A (zh) * | 2020-03-11 | 2020-07-28 | 西北大学 | 一种基于图卷积网络的源代码漏洞检测方法 |
CN111506504A (zh) * | 2020-04-13 | 2020-08-07 | 扬州大学 | 基于软件开发过程度量的软件安全性缺陷预测方法及装置 |
CN111783100A (zh) * | 2020-06-22 | 2020-10-16 | 哈尔滨工业大学 | 基于图卷积网络对代码图表示学习的源代码漏洞检测方法 |
Non-Patent Citations (3)
Title |
---|
Guixin Ye 等.Deep Program Structure Modeling Through Multi-Relational Graph-based Learning.《PACT '20: Proceedings of the ACM International Conference on Parallel Architectures and Compilation Techniques》.2020,111-123. * |
Learning to map source code to software vulnerability using code-as-a-graph;Sahil Suneja 等;《arxiv》;20200615;1-8 * |
基于抽象语法树的智能化漏洞检测系统;陈肇炫 等;《信息安全学报》;20200715;第5卷(第4期);1-13 * |
Also Published As
Publication number | Publication date |
---|---|
CN112288079A (zh) | 2021-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112288079B (zh) | 图神经网络模型训练方法、软件缺陷检测方法及系统 | |
CN111259394B (zh) | 一种基于图神经网络的细粒度源代码漏洞检测方法 | |
CN111459799B (zh) | 一种基于Github的软件缺陷检测模型建立、检测方法及系统 | |
CN117951701A (zh) | 用于确定软件代码中的缺陷和漏洞的方法 | |
CN112733156A (zh) | 基于代码属性图的软件脆弱性智能检测方法、系统及介质 | |
CN108804326B (zh) | 一种软件代码自动检测方法 | |
CN112069069A (zh) | 缺陷自动定位分析方法、设备及可读存储介质 | |
CN114936158A (zh) | 一种基于图卷积神经网络的软件缺陷定位方法 | |
CN116578980A (zh) | 基于神经网络的代码分析方法及其装置、电子设备 | |
CN113779590B (zh) | 一种基于多维度表征的源代码漏洞检测方法 | |
CN114385491B (zh) | 一种基于深度学习的js转译器缺陷检测方法 | |
CN116383833A (zh) | 软件程序代码的测试方法及其装置、电子设备、存储介质 | |
CN111898134B (zh) | 基于LSTM和BiLSTM的智能合约漏洞检测方法和装置 | |
CN106326123B (zh) | 一种用于检测数组越界缺陷的方法及系统 | |
CN112631944A (zh) | 基于抽象语法树的源码检测方法及装置、计算机存储介质 | |
CN115098389B (zh) | 一种基于依赖模型的rest接口测试用例生成方法 | |
CN115438341A (zh) | 提取代码循环计数器的方法、装置、存储介质和电子设备 | |
CN116126692A (zh) | 一种基于python的算法工具自动化测试系统及方法 | |
CN115934548A (zh) | 一种基于信息检索的语句级软件缺陷定位方法及系统 | |
CN115577364A (zh) | 一种多静态分析工具结果融合的漏洞挖掘方法 | |
CN115221963A (zh) | 一种数据驱动的核级管道共振故障检测方法和系统 | |
KR102217092B1 (ko) | 애플리케이션의 품질 정보 제공 방법 및 장치 | |
CN117592061B (zh) | 融合代码漏洞特征及属性图的源代码安全检测方法与装置 | |
Ouyang et al. | Binary vulnerability mining based on long short-term memory network | |
CN116361816B (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 |