CN116881172A - 一种基于图卷积网络的软件缺陷预测方法 - Google Patents
一种基于图卷积网络的软件缺陷预测方法 Download PDFInfo
- Publication number
- CN116881172A CN116881172A CN202311139495.1A CN202311139495A CN116881172A CN 116881172 A CN116881172 A CN 116881172A CN 202311139495 A CN202311139495 A CN 202311139495A CN 116881172 A CN116881172 A CN 116881172A
- Authority
- CN
- China
- Prior art keywords
- graph
- node
- dependency graph
- nodes
- program dependency
- 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.)
- Granted
Links
- 230000007547 defect Effects 0.000 title claims abstract description 96
- 238000000034 method Methods 0.000 title claims abstract description 65
- 238000005096 rolling process Methods 0.000 claims abstract description 26
- 238000012360 testing method Methods 0.000 claims description 39
- 238000012549 training Methods 0.000 claims description 29
- 238000012795 verification Methods 0.000 claims description 26
- 239000013598 vector Substances 0.000 claims description 18
- 230000002950 deficient Effects 0.000 claims description 13
- 238000003012 network analysis Methods 0.000 claims description 10
- 238000005516 engineering process Methods 0.000 claims description 6
- 238000005259 measurement Methods 0.000 claims description 3
- 238000007670 refining Methods 0.000 claims description 3
- 102100031554 Double C2-like domain-containing protein alpha Human genes 0.000 claims description 2
- 101000866272 Homo sapiens Double C2-like domain-containing protein alpha Proteins 0.000 claims description 2
- 230000006870 function Effects 0.000 claims description 2
- 239000011159 matrix material Substances 0.000 claims 1
- 230000000694 effects Effects 0.000 description 5
- 238000002474 experimental method Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 4
- 238000013527 convolutional neural network Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 102100029469 WD repeat and HMG-box DNA-binding protein 1 Human genes 0.000 description 1
- 101710097421 WD repeat and HMG-box DNA-binding protein 1 Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000007477 logistic regression Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007637 random forest analysis Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012706 support-vector machine Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- 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/0464—Convolutional networks [CNN, ConvNet]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种基于图卷积网络的软件缺陷预测方法,该方法通过采集含有多个软件版本的项目集合,针对单行代码无法实现语义可区分问题,提出使用程序依赖图中的流信息对原始语句进行扩展,使代码行包含的语义更加丰富,该方法将低维空间向量作为细化后的程序依赖图中节点的特征,可以完整保留源代码文件的结构和语义信息,能够更好的学习与缺陷相关特征,此外,若软件存在缺陷,则继续使用事后解释模型提取对模型预测具有关键影响的最小子图,使用社交网络分析方法计算最小子图中各个节点的节点重要性,以节点重要性作为对应代码行的缺陷评估指标,能够有效提升行级别的软件缺陷预测性能。
Description
技术领域
本发明涉及软件缺陷预测技术领域,特别是涉及一种基于图卷积网络的软件缺陷预测方法。
背景技术
随着软件工程技术的不断发展,对软件缺陷的研究已经逐渐成为软件可靠性研究的热点。根据IEEE标准1044-2009,软件缺陷是“软件产品中的不完善或缺陷,该产品不符合其要求或规格,需要进行修复或替换”。目前,研究者们广泛使用机器学习技术(如逻辑回归、支持向量机、朴素贝叶斯和随机森林等)和深度学习技术(如BP神经网络、卷积神经网络、图神经网络等)进行软件缺陷预测。此外,缺陷预测的粒度主要划分为文件级、类级和方法级(在面向对象程序实现的项目中,文件粒度也被称为类粒度)。然而,目前大多数方法的预测粒度仍然在文件级别,被认为是粗粒度的。据统计,一个文件中通常只有1%-3%的代码行是有缺陷的,这表明当文件预测为缺陷时,开发人员可能将大量的时间和精力浪费在进一步定位文件中的可能有缺陷的代码行上。
行级别软件缺陷预测模型可以帮助开发和测试人员快速定位高风险代码行,从而显著降低软件缺陷修复成本,提高软件缺陷修复效率。然而,在行级别缺陷预测中,一行代码包含的语义信息有限,现有技术大多采用粗粒度缺陷预测,难以充分表达其中的含义,导致预测性能较差。
发明内容
本发明的目的在于提供一种基于图卷积网络的软件缺陷预测方法,以解决现有技术预测性能差的问题。
一种基于图卷积网络的软件缺陷预测方法,包括:
S1,采集含有多个软件版本的项目集合,根据项目集合构建原始缺陷预测数据集,将原始缺陷预测数据集拆分为训练集、验证集和测试集,所述训练集、验证集和测试集均包含源代码文件以及指示文件是否有缺陷的缺陷指示标签;
S2,提取训练集或验证集或测试集中的源代码文件对应的程序依赖图,在程序依赖图中,节点对应软件中的代码行,边对应关系;
S3,将程序依赖图中的节点和边进行细化,得到细化后的程序依赖图;
S4,使用流信息扩展方法将细化后的程序依赖图中节点对应的语句扩展为多行,得到经过流信息扩展后的语句;
S5,使用词嵌入技术将经过流信息扩展后的语句转换为低维空间向量,并将低维空间向量作为细化后的程序依赖图中节点的特征,从而得到词嵌入后的程序依赖图,其中,对于训练集中的源代码文件,得到训练集对应的词嵌入后的程序依赖图,对于验证集中的源代码文件,得到验证集对应的词嵌入后的程序依赖图,对于测试集中的源代码文件,得到测试集对应的词嵌入后的程序依赖图;
S6,基于训练集和验证集构建图卷积网络模型,将训练集对应的词嵌入后的程序依赖图和验证集对应的词嵌入后的程序依赖图输入至图卷积网络模型,在训练集上训练并在验证集上进行验证,从而得到已训练的图卷积网络模型;
S7,使用已训练的图卷积网络模型对测试集对应的词嵌入后的程序依赖图进行预测,若预测结果为测试集有缺陷,则将已训练的图卷积网络模型和测试集对应的词嵌入后的程序依赖图同时输入至事后解释模型,通过事后解释模型提取出测试集对应的最小子图,使用社交网络分析方法计算测试集对应的最小子图中各个节点的节点重要度,并根据测试集对应的最小子图中各个节点对应的代码行的缺陷指示标签确定节点重要度阈值;
S8,获取待测试的软件对应的词嵌入后的程序依赖图,并将已训练的图卷积网络模型和待测试的软件对应的词嵌入后的程序依赖图同时输入至事后解释模型,通过事后解释模型提取出待测试的软件对应的最小子图,使用社交网络分析方法计算待测试的软件对应的最小子图中各个节点的节点重要度,将待测试的软件对应的最小子图中各个节点的节点重要度分别与重要度阈值进行对比分析,从而识别出待测试的软件中存在缺陷的代码行。
根据本发明提供的基于图卷积网络的软件缺陷预测方法,针对单行代码无法实现语义可区分问题,提出使用程序依赖图中的流信息对原始语句进行扩展,使代码行包含的语义更加丰富,通过使用词嵌入技术将经过流信息扩展后的语句转换为低维空间向量,并将低维空间向量作为细化后的程序依赖图中节点的特征,可以完整保留源代码文件的结构和语义信息,能够更好的学习与缺陷相关特征,此外,若软件存在缺陷,则继续使用事后解释模型提取对模型预测具有关键影响的最小子图,使用社交网络分析方法计算最小子图中各个节点的节点重要性,以节点重要性作为对应代码行的缺陷评估指标,能够有效提升行级别的软件缺陷预测性能。
附图说明
图1为一实施例的基于图卷积网络的软件缺陷预测方法的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,一种基于图卷积网络的软件缺陷预测方法,包括步骤S1~S8:
S1,采集含有多个软件版本的项目集合,根据项目集合构建原始缺陷预测数据集,将原始缺陷预测数据集拆分为训练集、验证集和测试集,所述训练集、验证集和测试集均包含源代码文件以及指示文件是否有缺陷的缺陷指示标签。
其中,原始缺陷预测数据集中的每个软件项目都需要收集三个或更多版本。可以以原始缺陷预测数据集中软件项目的首个版本作为训练集,第二个版本作为验证集,除训练集和验证集外的软件版本作为测试集。对于缺陷指示标签,存在缺陷的文件为缺陷文件,不存在缺陷的文件为无缺陷文件,缺陷文件中的缺陷语句一并给出。
S2,提取训练集或验证集或测试集中的源代码文件对应的程序依赖图,在程序依赖图中,节点对应软件中的代码行,边对应关系。
其中,关系包含源代码的控制依赖和数据依赖关系。具体可以先对源代码文件进行特征提取,将源代码转化为结构化数据,从而提取软件中的数据依赖和控制依赖关系。
S3,将程序依赖图中的节点和边进行细化,得到细化后的程序依赖图。
其中,步骤S3具体包括:
将程序依赖图中的节点类型由单一类型细化为三类,分别为:变量定义的节点、判断的节点、执行语句的节点;将程序依赖图中的控制流边细化为三类,分别为:判断条件为1语句执行的边、判断条件为0语句执行的边、下一次执行的边。
节点的细化可以实现将不同类型的代码行加以区分,边的细化可以更清晰体现源代码的执行流程。通过将程序依赖图进一步细分可以充分利用源代码的结构信息,挖掘程序依赖图结构中的缺陷相关信息。
S4,使用流信息扩展方法将细化后的程序依赖图中节点对应的语句扩展为多行,得到经过流信息扩展后的语句。
其中,步骤S4具体包括:
将细化后的程序依赖图中的节点对应的语句,按照后向数据流、后向控制流、当前代码行、前向控制流以及前向数据流的方式扩展为多行,且控制流扩展的优先级为:判断条件为1的控制流的优先级大于下一次执行的控制流的优先级,下一次执行的控制流的优先级大于判断条件为0的控制流的优先级。
需要指出的是,使用流信息对程序依赖图中的节点对应的代码行进行语义扩展,将原始语句按照后向数据流、后向控制流、当前代码行、前向控制流以及前向数据流的方式扩展为多行,若该行代码无对应的流信息则将该信息舍弃,如某行代码不存在后向数据流,则将后向数据流舍弃,以此类推。
S5,使用词嵌入技术将经过流信息扩展后的语句转换为低维空间向量,并将低维空间向量作为细化后的程序依赖图中节点的特征,从而得到词嵌入后的程序依赖图,其中,对于训练集中的源代码文件,得到训练集对应的词嵌入后的程序依赖图,对于验证集中的源代码文件,得到验证集对应的词嵌入后的程序依赖图,对于测试集中的源代码文件,得到测试集对应的词嵌入后的程序依赖图。
其中,使用词嵌入技术将经过流信息扩展后的语句转换为低维空间向量具体包括:
将经过流信息扩展后的语句进行合并以构建语料库,通过Doc2Vec在语料库上学习固定长度的向量表示形式,从而使用Doc2Vec分别提取经过流信息扩展后语句的低维空间向量。低维空间向量将包含扩展后的语句的完整语义信息。将这些低维空间向量汇入程序依赖图对应的节点处,作为词嵌入后的程序依赖图中的节点特征,词嵌入后的程序依赖图中将包含源代码文件的结构信息和语义信息。
S6,基于训练集和验证集构建图卷积网络模型,将训练集对应的词嵌入后的程序依赖图和验证集对应的词嵌入后的程序依赖图输入至图卷积网络模型,在训练集上训练并在验证集上进行验证,从而得到已训练的图卷积网络模型。
S7,使用已训练的图卷积网络模型对测试集对应的词嵌入后的程序依赖图进行预测,若预测结果为测试集有缺陷,则将已训练的图卷积网络模型和测试集对应的词嵌入后的程序依赖图同时输入至事后解释模型,通过事后解释模型提取出测试集对应的最小子图,使用社交网络分析方法计算测试集对应的最小子图中各个节点的节点重要度,并根据测试集对应的最小子图中各个节点对应的代码行的缺陷指示标签确定节点重要度阈值。
本实施例中,所述事后解释模型采用图解释器GNNExplainer。GNNExplainer能够使词嵌入后的程序依赖图和最小子图之间的分数差异最小。最小子图中的节点可视作导致文件缺陷的重要语句。
其中,社交网络分析方法计算节点重要性采用的是度中心性、Katz中心性和紧密中心性。
度中心性体现的是当前节点所连接节点的百分比。度中心性是在网络分析中刻画节点中心性的最直接度量指标,一个节点的度越大则相应的度中心性越高,该节点在网络中越重要。
Katz中心性通过计算直接邻居的数量,以及通过这些直接邻居连接到的所有其它节点的数量,来计算节点的相对影响。
紧密中心性反映一个节点与网络中的所有其它节点的接近程度。紧密中心性定义为从该节点到其它节点的最短路径长度的平均值。一个节点的平均最短距离越小,该节点的紧密中心性越大。
具体的,节点重要度的计算公式如下:
;
;
;
;
;
;
;
其中,表示节点i的节点重要度,/>表示归一化后的节点i的度中心性值,/>表示归一化后的节点i的Katz中心性值,/>表示归一化后的节点i的紧密中心性值;G表示词嵌入后的程序依赖图,/>表示节点i的度,/>表示G中所有节点的度,max表示取最大值函数,/>节点i的Katz中心性值,/>为衰减因子,用于惩罚节点与远邻居之间的连接;/>为G的特征值,/>是G的邻接矩阵中的元素,如果节点i与节点j相连,则/>的取值为1,否则为0;/>表示第j个节点的Katz中心性值,/>为用于控制初始中心性的常数,/>表示节点i的紧密中心性值,N表示G中的节点的总数量,/>表示节点i和节点j之间的距离,/>表示G中所有节点的紧密中心性值的最大值。
需要指出的是,节点重要度的数值越大,存在缺陷的可能性就越大。由于测试集中各个代码行是否有缺陷是已知信息,因此,只需计算出测试集中各个代码行对应节点的节点重要度,找到有缺陷的代码行对应节点的节点重要度、以及没有缺陷的代码行对应节点的节点重要度,就可以确定出节点重要度阈值。具体的,可以取有缺陷的代码行对应节点的节点重要度和没有缺陷的代码行对应节点的节点重要度之间的某个值作为节点重要度阈值,直接将没有缺陷的代码行对应节点的节点重要度中的最大值作为节点重要度阈值。
可以理解的,可以将不在最小子图中的节点对应的节点重要度定义为0。
S8,获取待测试的软件对应的词嵌入后的程序依赖图,并将已训练的图卷积网络模型和待测试的软件对应的词嵌入后的程序依赖图同时输入至事后解释模型,通过事后解释模型提取出待测试的软件对应的最小子图,使用社交网络分析方法计算待测试的软件对应的最小子图中各个节点的节点重要度,将待测试的软件对应的最小子图中各个节点的节点重要度分别与重要度阈值进行对比分析,从而识别出待测试的软件中存在缺陷的代码行。
具体的,若将没有缺陷的代码行对应节点的节点重要度中的最大值作为节点重要度阈值,则对于待测试的软件中的代码行,只要其对应的节点重要度大于节点重要度阈值,就可以确定该代码行存在缺陷。
下面对本发明提供的方法分别进行文件级别预测实验和行级别预测实验。
对于文件级别预测实验,将本发明的方法和其它三种现有技术的方法进行对比实验,其它三种现有技术的方法分别为:CNN、DBN和Bi-LSTM,DNN为一种基于卷积神经网络的文件级别缺陷预测方法,DBN为一种基于深度信念网络的文件级别缺陷预测方法,Bi-LSTM为一种基于双向长短时记忆网络的文件级别缺陷预测方法。本发明提供的方法和其它三种现有技术的方法在相同的环境、相同的数据集下进行实验。
以ActiveMQ软件作为实验对象,有三个版本,分别为5.2.0、5.3.0和5.8.0。ActiveMQ软件的文件数为:1884-3420,代码行数为:142k-299k,缺陷文件数为:2%-7%,缺陷行数为:0.08%-0.44%。
采用AUC、Balanced Accuracy和MCC这三种文件级别评价指标。AUC是ROC曲线下的面积,AUC取值范围为[0,1],值为1表示模型预测效果最好,值为0.5表示随机猜测;Balanced Accuracy衡量真阳性率(即有多少预测的缺陷文件是正确的)和真阴性率(即有多少预测的无缺陷文件是正确的)的平均值,高Balanced Accuracy表明方法可以准确预测有缺陷文件和无缺陷文件。MCC衡量实际结果和预测结果之间的相关系数,MCC值取值范围为[-1, 1],其中MCC值为1表示预测效果最佳,-1表示预测结果与实际完全不一致。
表1展示了本发明的方法与其它三种现有技术的方法的文件级别预测结果对比。
表1
从表1可以看出,本发明的方法实现了0.826的AUC、0.669的Balanced Accuracy和0.198的MCC预测性能,相比其它三种现有技术的方法,本发明提出的方法在AUC和BalancedAccuracy指标上表现更优,在真实的开发场景中,开发人员往往更加重视缺陷概率高的文件,高AUC值表明在根据缺陷概率对文件进行排名时,能够取得良好的效果。因此,本发明的方法可以适用于实际场景,能够帮助开发人员更有效地识别潜在的软件缺陷。
对于行级别预测实验,将本发明的方法和其它两种现有技术的方法进行对比实验,其它两种现有技术的方法分别为:N.gram和ErrorProne。N.gram为一种基于缓存的语言模型,即适用源代码检测的增强型N-gram模型;ErrorProne为Google的静态分析工具。本发明提供的方法和其它两种现有技术的方法在相同的环境、相同的数据集下进行实验。
仍然以ActiveMQ软件作为实验对象,有三个版本,分别为5.2.0、5.3.0和5.8.0。ActiveMQ软件的文件数为:1884-3420,代码行数为:142k-299k,缺陷文件数为:2%-7%,缺陷行数为:0.08%-0.44%。
采用Recall@Top20%LOC、Effort@Top20%Recall和这三种行级别评价指标。
Recall@Top20%LOC的计算方式如下:首先,将测试集上软件项目的所有源代码文件进行合并,根据代码行的缺陷风险系数由高到低进行排序,从上到下统计检查前20%代码行时,找到的缺陷占总缺陷数的比例。Recall@Top20%LOC值越高,说明方法可以将许多实际的缺陷代码行排在最前面。当工作量固定的情况下,可以找到更多实际存在缺陷的代码行;Recall@Top20%LOC值越低表明更多无缺陷的代码行在前20%的代码行中,开发人员需要花费更多的精力来定位有缺陷的代码行。
Effort@Top20%Recall的计算方式如下:首先,将测试集上软件项目的所有源代码文件进行合并,根据代码行的缺陷风险系数由高到低进行排序,从上到下统计找到20%的实际缺陷代码行时,需要检查的代码行数占软件项目所有代码行数的比例。Effort@Top20%Recall的数值越低,表明开发人员只需花费很少的精力即可找到前20%的实际缺陷行;Effort@Top20%Recall的数值越高,说明开发人员需花费更多精力来找到整个版本前20%的实际缺陷行;
的计算方式如下:首先,将测试集上软件项目的所有源代码文件进行合并,根据代码行的缺陷风险系数由高到低进行排序,从上到下统计找到第一条缺陷代码行之前需要统计多少条无缺陷的代码行。/>值越低,说明排名靠前的无缺陷行越少,而/>值越高,说明开发者会在无缺陷代码行上花费更多不必要的精力。
表2展示了本发明的方法与其它两种现有技术的方法的行级别预测结果对比。
表2
从表2可以看出,本发明的方法实现了0.431的Recall@Top20%LOC、0.100的Effort@Top20%Recall以及88的。相比其它两种现有技术的方法,本发明提出的方法在行级别预测的性能上表现更优,且在Recall@Top20%LOC和Effort@Top20%Recall指标上显著优于其它方法,该结果表明,本发明的方法在行级别软件缺陷预测中实现了最高的成本效益,即付出最少的工作量可以找到最多的缺陷代码行。
综上,根据本发明提供的基于图卷积网络的软件缺陷预测方法,针对单行代码无法实现语义可区分问题,提出使用程序依赖图中的流信息对原始语句进行扩展,使代码行包含的语义更加丰富,通过使用词嵌入技术将经过流信息扩展后的语句转换为低维空间向量,并将低维空间向量作为细化后的程序依赖图中节点的特征,可以完整保留源代码文件的结构和语义信息,能够更好的学习与缺陷相关特征,此外,若软件存在缺陷,则继续使用事后解释模型提取对模型预测具有关键影响的最小子图,使用社交网络分析方法计算最小子图中各个节点的节点重要性,以节点重要性作为对应代码行的缺陷评估指标,能够有效提升行级别的软件缺陷预测性能。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
Claims (6)
1.一种基于图卷积网络的软件缺陷预测方法,其特征在于,包括:
S1,采集含有多个软件版本的项目集合,根据项目集合构建原始缺陷预测数据集,将原始缺陷预测数据集拆分为训练集、验证集和测试集,所述训练集、验证集和测试集均包含源代码文件以及指示文件是否有缺陷的缺陷指示标签;
S2,提取训练集或验证集或测试集中的源代码文件对应的程序依赖图,在程序依赖图中,节点对应软件中的代码行,边对应关系;
S3,将程序依赖图中的节点和边进行细化,得到细化后的程序依赖图;
S4,使用流信息扩展方法将细化后的程序依赖图中节点对应的语句扩展为多行,得到经过流信息扩展后的语句;
S5,使用词嵌入技术将经过流信息扩展后的语句转换为低维空间向量,并将低维空间向量作为细化后的程序依赖图中节点的特征,从而得到词嵌入后的程序依赖图,其中,对于训练集中的源代码文件,得到训练集对应的词嵌入后的程序依赖图,对于验证集中的源代码文件,得到验证集对应的词嵌入后的程序依赖图,对于测试集中的源代码文件,得到测试集对应的词嵌入后的程序依赖图;
S6,基于训练集和验证集构建图卷积网络模型,将训练集对应的词嵌入后的程序依赖图和验证集对应的词嵌入后的程序依赖图输入至图卷积网络模型,在训练集上训练并在验证集上进行验证,从而得到已训练的图卷积网络模型;
S7,使用已训练的图卷积网络模型对测试集对应的词嵌入后的程序依赖图进行预测,若预测结果为测试集有缺陷,则将已训练的图卷积网络模型和测试集对应的词嵌入后的程序依赖图同时输入至事后解释模型,通过事后解释模型提取出测试集对应的最小子图,使用社交网络分析方法计算测试集对应的最小子图中各个节点的节点重要度,并根据测试集对应的最小子图中各个节点对应的代码行的缺陷指示标签确定节点重要度阈值;
S8,获取待测试的软件对应的词嵌入后的程序依赖图,并将已训练的图卷积网络模型和待测试的软件对应的词嵌入后的程序依赖图同时输入至事后解释模型,通过事后解释模型提取出待测试的软件对应的最小子图,使用社交网络分析方法计算待测试的软件对应的最小子图中各个节点的节点重要度,将待测试的软件对应的最小子图中各个节点的节点重要度分别与重要度阈值进行对比分析,从而识别出待测试的软件中存在缺陷的代码行。
2.根据权利要求1所述的基于图卷积网络的软件缺陷预测方法,其特征在于,步骤S3具体包括:
将程序依赖图中的节点类型由单一类型细化为三类,分别为:变量定义的节点、判断的节点、执行语句的节点;将程序依赖图中的控制流边细化为三类,分别为:判断条件为1语句执行的边、判断条件为0语句执行的边、下一次执行的边。
3.根据权利要求1所述的基于图卷积网络的软件缺陷预测方法,其特征在于,步骤S4具体包括:
将细化后的程序依赖图中的节点对应的语句,按照后向数据流、后向控制流、当前代码行、前向控制流以及前向数据流的方式扩展为多行,且控制流扩展的优先级为:判断条件为1的控制流的优先级大于下一次执行的控制流的优先级,下一次执行的控制流的优先级大于判断条件为0的控制流的优先级。
4.根据权利要求1所述的基于图卷积网络的软件缺陷预测方法,其特征在于,步骤S5中,使用词嵌入技术将经过流信息扩展后的语句转换为低维空间向量具体包括:
将经过流信息扩展后的语句进行合并以构建语料库,通过Doc2Vec在语料库上学习固定长度的向量表示形式,从而使用Doc2Vec分别提取经过流信息扩展后语句的低维空间向量。
5.根据权利要求1所述的基于图卷积网络的软件缺陷预测方法,其特征在于,所述事后解释模型采用图解释器GNNExplainer。
6.根据权利要求5所述的基于图卷积网络的软件缺陷预测方法,其特征在于,节点重要度的计算公式如下:
;
;
;
;
;
;
;
其中,表示节点i的节点重要度,/>表示归一化后的节点i的度中心性值,/>表示归一化后的节点i的Katz中心性值,/>表示归一化后的节点i的紧密中心性值;G表示词嵌入后的程序依赖图,/>表示节点i的度,/>表示G中所有节点的度,max表示取最大值函数,/>节点i的Katz中心性值,/>为衰减因子,/>为G的特征值,/>是G的邻接矩阵中的元素,/>表示第j个节点的Katz中心性值,/>为用于控制初始中心性的常数,/>表示节点i的紧密中心性值,N表示G中的节点的总数量,/>表示节点i和节点j之间的距离,/>表示G中所有节点的紧密中心性值的最大值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311139495.1A CN116881172B (zh) | 2023-09-06 | 2023-09-06 | 一种基于图卷积网络的软件缺陷预测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311139495.1A CN116881172B (zh) | 2023-09-06 | 2023-09-06 | 一种基于图卷积网络的软件缺陷预测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116881172A true CN116881172A (zh) | 2023-10-13 |
CN116881172B CN116881172B (zh) | 2024-02-23 |
Family
ID=88264764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311139495.1A Active CN116881172B (zh) | 2023-09-06 | 2023-09-06 | 一种基于图卷积网络的软件缺陷预测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116881172B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120278261A1 (en) * | 2011-04-28 | 2012-11-01 | International Business Machines Corporation | Determining the importance of data items and their characteristics using centrality measures |
US20130041860A1 (en) * | 2011-08-10 | 2013-02-14 | International Business Machines Corporation | Predicting influence in social networks |
CN103473400A (zh) * | 2013-08-27 | 2013-12-25 | 北京航空航天大学 | 基于层次依赖建模的软件fmea方法 |
US20190286659A1 (en) * | 2018-03-13 | 2019-09-19 | Pinterest, Inc. | Generating neighborhood convolutions according to relative importance |
WO2021093140A1 (zh) * | 2019-11-11 | 2021-05-20 | 南京邮电大学 | 一种跨项目软件缺陷预测方法及其系统 |
CN113378339A (zh) * | 2021-05-19 | 2021-09-10 | 西安邮电大学 | 社交网络节点的排序方法 |
CN114936158A (zh) * | 2022-05-28 | 2022-08-23 | 南通大学 | 一种基于图卷积神经网络的软件缺陷定位方法 |
CN115617694A (zh) * | 2022-11-30 | 2023-01-17 | 中南大学 | 基于信息融合的软件缺陷预测方法、系统、设备及介质 |
CN115906086A (zh) * | 2023-02-23 | 2023-04-04 | 中国人民解放军国防科技大学 | 基于代码属性图的网页后门检测方法、系统及存储介质 |
-
2023
- 2023-09-06 CN CN202311139495.1A patent/CN116881172B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120278261A1 (en) * | 2011-04-28 | 2012-11-01 | International Business Machines Corporation | Determining the importance of data items and their characteristics using centrality measures |
US20130041860A1 (en) * | 2011-08-10 | 2013-02-14 | International Business Machines Corporation | Predicting influence in social networks |
CN103473400A (zh) * | 2013-08-27 | 2013-12-25 | 北京航空航天大学 | 基于层次依赖建模的软件fmea方法 |
US20190286659A1 (en) * | 2018-03-13 | 2019-09-19 | Pinterest, Inc. | Generating neighborhood convolutions according to relative importance |
WO2021093140A1 (zh) * | 2019-11-11 | 2021-05-20 | 南京邮电大学 | 一种跨项目软件缺陷预测方法及其系统 |
CN113378339A (zh) * | 2021-05-19 | 2021-09-10 | 西安邮电大学 | 社交网络节点的排序方法 |
CN114936158A (zh) * | 2022-05-28 | 2022-08-23 | 南通大学 | 一种基于图卷积神经网络的软件缺陷定位方法 |
CN115617694A (zh) * | 2022-11-30 | 2023-01-17 | 中南大学 | 基于信息融合的软件缺陷预测方法、系统、设备及介质 |
CN115906086A (zh) * | 2023-02-23 | 2023-04-04 | 中国人民解放军国防科技大学 | 基于代码属性图的网页后门检测方法、系统及存储介质 |
Non-Patent Citations (6)
Title |
---|
REZA ZAFARANI, ET AL.: "Network Measures", 《SOCIAL MEDIA MINING: AN INTRODUCTION》, pages 3 * |
XIAO CHENG, ET AL.: "Static Detection of Control-Flow-Related Vulnerabilities Using Graph Embedding", 《RESEARCHGATE》, pages 1 - 11 * |
吴月明: "基于社交网络分析的安卓恶意软件检测研究", 《中国博士学位论文全文数据库 信息科技辑》, pages 2 * |
张聪品, 丁辉: "异常结构对Java程序分析的影响", 计算机应用, no. 12, pages 2 * |
胡雨涛 等: "基于图神经网络的切片级漏洞检测及解释方法", 《软件学报》, vol. 34, no. 6, pages 2543 - 2561 * |
陈晓红 等: "社会网络环境下基于犹豫度和一致性的大群体决策方法", 《系统工程理论与实践》, pages 3 * |
Also Published As
Publication number | Publication date |
---|---|
CN116881172B (zh) | 2024-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180082215A1 (en) | Information processing apparatus and information processing method | |
WO2021139262A1 (zh) | 文献主题词聚合方法、装置、计算机设备及可读存储介质 | |
CN107346328B (zh) | 一种基于多粒度层级网络的跨模态关联学习方法 | |
CN113806482B (zh) | 视频文本跨模态检索方法、装置、存储介质和设备 | |
CN112328891B (zh) | 训练搜索模型的方法、搜索目标对象的方法及其装置 | |
CN111427775B (zh) | 一种基于Bert模型的方法层次缺陷定位方法 | |
US11928879B2 (en) | Document analysis using model intersections | |
CN111767738A (zh) | 一种标签校验方法、装置、设备和存储介质 | |
Liu et al. | Generating descriptions for screenshots to assist crowdsourced testing | |
CN114816962A (zh) | 基于attention-lstm的网络故障预测方法 | |
CN117493174B (zh) | 测试用例确定、云盘回归测试方法及装置 | |
CN112579583B (zh) | 一种面向事实检测的证据与声明联合抽取方法 | |
CN116029280A (zh) | 一种文档关键信息抽取方法、装置、计算设备和存储介质 | |
CN116881172B (zh) | 一种基于图卷积网络的软件缺陷预测方法 | |
CN117009518A (zh) | 融合基本属性和文本内容的相似事件判断方法及其应用 | |
RU2715024C1 (ru) | Способ отладки обученной рекуррентной нейронной сети | |
CN115934548A (zh) | 一种基于信息检索的语句级软件缺陷定位方法及系统 | |
CN112380111B (zh) | 一种基于新项目的即时缺陷定位方法及系统 | |
Ataman et al. | Transforming large-scale participation data through topic modelling in urban design processes | |
Husain | Study of computational techniques to deal with ambiguity in SRS documents | |
CN118036733B (zh) | 一种舰船试验训练的知识图谱构建方法、系统和介质 | |
CN117574981B (zh) | 一种信息分析模型的训练方法及信息分析方法 | |
CN112579841B (zh) | 一种多模态数据库建立方法、检索方法及系统 | |
KR102560907B1 (ko) | 개선된 학습모델을 통해 재난발생여부를 판단하는 방법 및 그 장치 | |
CN113536077B (zh) | 一种移动app特定事件内容检测方法与装置 |
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 |