【技术实现步骤摘要】
基于异质类关系图神经网络的软件缺陷预测方法和系统
[0001]本专利技术涉及软件工程中缺陷预测
,特别涉及一种基于异质类关系图神经网络的软件缺陷检测方法和系统
。
技术介绍
[0002]现代软件系统需求不断增多
,
系统日渐复杂,维护代码变得越来越费时费力
,
导致复杂软件系统的缺陷和漏洞难以避免
。
国内外历史上出现过多次由于软件缺陷而导致的重大事故
,
预测软件代码缺陷以有效保证软件可信性成为普遍关注的问题
。
软件缺陷预测是使用代码复杂性和变更历史等软件特征构建分类器以预测可能包含缺陷的代码区域的过程
,
该技术可提前发现潜在的缺陷和漏洞
。
[0003]为了降低网络结构特征表示的复杂性
,
近年来网络嵌入算法研究取得重大进展
。
网络嵌入的核心思想是
,
在保持网络结构特性
(
一阶相似度
、
二阶相似度等
)
的同时
,
将高维稀疏的网络结构或者图结构映射到低维稠密的向量空间
。
这种嵌入后的网络特征便于输入到机器学习模型中
。
嵌入方法主要包括基于矩阵分解的方法
、
基于随机游走的方法
、
基于深度学习的方法
。
网络嵌入目前已应用到网络压缩
、
可视化
、
聚 ...
【技术保护点】
【技术特征摘要】
1.
一种基于异质类关系图神经网络的软件缺陷检测方法,其特征在于,具体包括以下步骤:
S1
:使用开源工具解析软件源代码文件,抽取类之间的依赖关系;
S2
:利用开源工具,获取软件修订历史,从中抽取出软件类之间的共改关系,并获取关系连边权重;
S3
:根据获取到的依赖关系和共改关系,构建一个异质类关系图;
S4
:使用
node2vec
方法学习得到软件依赖网络嵌入度量,并与传统静态代码度量进行结合,用以对节点属性进行初始化,以此得到带属性的异质类关系图;
S5
:使用关系图神经网络模型学习异质类关系图,获得软件异质网络结构特征,最终得到每个节点的预测值;
S6
:根据软件异质网络结构特征,训练一个分类器,用于缺陷预测
。2.
根据权利要求1所述的软件缺陷检测方法,其特征在于:
S1
具体包括以下子步骤:
S11
:以
Java
语言开发的软件系统作为分析对象,通过
Dependencyfinder
工具对源代码编译后产生的
.class
文件
、
由源代码打包而成的
.jar
文件或者包含源代码的
zip
压缩包进行依赖关系扫描,并保存为
XML
文件;
S12
:解析并提取各类文件之间的依赖关系,并提取依赖关系连边的权重;;具体依赖关系的提取方式如下:
1)
继承,假如类
v
c1
继承类
v
c2
,或实现接口
v
c2
,则存在边
e
12
=
(v
c1
,v
c2
)
;
2)
聚合,假如类
v
c1
包含类
v
c2
的属性,则存在边
e
12
=
(v
c1
,v
c2
)
;
3)
参数,假如类
v
c1
的方法调用了类
c
c2
的方法,则存在边
e
12
=
(v
c1
,v
c2
)
;其中,类之间的相互依赖次数代表了类之间的影响程度,连边权重的计算方式表示如下:其中
W
ij
表示节点
v
i
和节点
v
j
之间的权重,
d
ij
表示两节点之间的依赖次数,
N(j)
表示节点
v
j
的邻居集合
。3.
根据权利要求1所述的软件缺陷检测方法,其特征在于:
S2
具体包括以下子步骤:
S21
:利用自定义的解析程序从软件演化历史中的共同修改记录中提取软件源文件之间的共同修改关系;
S22
:根据源文件之间共同修改频次来获取共改关系连边的权重;首先,统计每对源文件之间的共同修改次数,然后,根据共同修改次数计算连边的权重;计算方式包括:简单计数法
、
归一化计数法和概率模型法
。4.
根据权利要求1所述的软件缺陷检测方法,其特征在于:
S3
具体步骤如下:基于依赖关系和共改关系,对软件系统进行图结构建模,生成软件图数据格式;具体的软件图结构模型定义如下:
HCRG(Heterogeneous Class Relation Graph)
被定义为一个无向加权网络
HCRG
=
(V,E,R,W)
,其中
V
表示节点集合,
E
表示边关系集合,
R
表示边关系类型的集合,
W
表示连边关系的权重
。
5.
根据权利要求1所述的软件缺陷检测方法,其特征在于:
S4
具体包括以下子步骤:
S41
:利用
Node2vec
方法,通过偏向性随机游走的方...
【专利技术属性】
技术研发人员:孙弋洋,马菊,何鹏,张群,陈辉,郑巧仙,
申请(专利权)人:湖北大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。