【技术实现步骤摘要】
知识驱动的软件缺陷检测与分析方法及系统
[0001]本专利技术属于软件安全领域,特别涉及一种知识驱动的软件缺陷检测与分析方法及系统。
技术介绍
[0002]软件缺陷是指软件产品的结果不符合软件要求或最终用户期望。它通常会以非预期的方式产生不正确或意外的结果和行为。软件日益增加的复杂性和依赖性增加了软件高质量、低成本和可维护的难度,以及创建软件缺陷的可能性。传统的缺陷检测方法大多针对某种特定类型的缺陷,通过正则表达式来匹配代码中可能存在缺陷的语句。然而,完全依靠人工专家制定的缺陷规则来涵盖日益增长的软件缺陷是不切实际的。
[0003]目前已有一些工作使用机器学习的方法来检测软件缺陷。何吉元等人提出一种基于搜索的半监督集成方法,通过具有全局搜索能力的遗传算法,基于少量已标记目标实例对基分类器进行集成,显著提高了项目间缺陷检测的性能。陈曙等人提出将实例加权的领域适配与机器学习的预测模型训练过程相结合,通过构造目标项目样本相关的权重,以实例权重去影响预测模型的参数学习过程,将来自目标项目中缺陷数据集的分布特性适配到训练数据集 ...
【技术保护点】
【技术特征摘要】
1.一种知识驱动的软件缺陷检测与分析方法,其特征在于,所述方法包括以下步骤:步骤1,采集公开的缺陷数据,包括缺陷报告以及缺陷代码,构建缺陷数据集;步骤2,对缺陷代码进行预处理,通过代码特征图对代码进行建模并嵌入到向量空间;其中代码特征图根据抽象语法树AST、控制流图CFG和程序依赖图PDG构造,图的边类型由AST、CFG和PDG构成,节点集由抽象语法树AST的节点集构成;从代码特征图中提取与缺陷代码行相关的缺陷特征子图进行图嵌入;步骤3,通过图神经网络学习缺陷代码隐式特征,训练缺陷检测模型;步骤4,对待检测项目进行处理,输入最优的检测模型中,检测项目中存在的缺陷,并将检测到的缺陷依据其缺陷类型与缺陷数据集中的同类型已知缺陷进行相似度计算,匹配相似度最高的已知缺陷;步骤5,提取相似缺陷报告中有语义价值的缺陷知识,进行知识融合与检测,构建软件缺陷知识图谱,通过挖掘相似缺陷报告中的关键信息以辅助开发者理解检测出的缺陷。2.根据权利要求1所述的知识驱动的软件缺陷检测与分析方法,其特征在于,步骤1所述采集公开的缺陷数据,构建缺陷数据集,具体过程包括:步骤1
‑
1,从缺陷追踪库和开源代码库中采集公开的缺陷数据,包括缺陷报告以及缺陷代码;步骤1
‑
2,对采集到的缺陷数据进行预处理,从函数级别提取缺陷代码,对函数级缺陷代码进行清洗,去除包括代码注释、声明的全局参数在内的多余信息,得到缺陷数据集。3.根据权利要求1所述的知识驱动的软件缺陷检测与分析方法,其特征在于,步骤2所述对缺陷代码进行预处理,通过代码特征图对代码进行建模并嵌入到向量空间,具体过程包括:步骤2
‑
1,依据缺陷报告中的描述信息,结合缺陷发生的原因,对缺陷进行分类,并通过抽象关系,对缺陷子类型进行归并,获得缺陷类型表,其中缺陷类型包括功能缺陷、接口缺陷、逻辑缺陷、计算缺陷和数据缺陷;步骤2
‑
2,对缺陷数据集中的缺陷数据进行分类,构建语料库,并划分训练集和验证集;步骤2
‑
3,对训练集中的缺陷代码进行代码表征,将缺陷代码表示为抽象语法树AST、控制流图CFG和程序依赖图PDG,并将三种图进行合成,构造代码特征图,其中图的边类型由AST、CFG和PDG构成,节点集由抽象语法树AST的节点集构成;步骤2
‑
4,通过程序切片对步骤2
‑
3得到的缺陷代码特征图进行切分,得到与缺陷代码行相关的缺陷特征子图;步骤2
‑
5,识别缺陷特征子图中的变量名和函数名,依据在单个函数内的出现顺序重命名,以对代码进行标准化,剔除人为命名带来的噪声;步骤2
‑
6,使用Word2Vec和Doc2Vec分别对缺陷特征子图中的叶子节点和语句节点进行图嵌入,获得可作为图神经网络输入的向量表示。4.根据权利要求1所述的知识驱动的软件缺陷检测与分析方法,其特征在于,步骤3所述通过图神经网络学习缺陷代码隐式特征,训练缺陷检测模型,具体过程包括:步骤3
‑
1,将缺陷特征子图输入到关系图卷积网络中,进行训练;其中,步骤2得到的图嵌入向量表示作为关系图卷积网络迭代所需的初始节点向量;步骤3
‑
2,通过关系图卷积网络,对节点特征进行迭代聚合,第l次聚合过程通过下述公
式计算得到:其中,表示节点i在关系r∈R下的邻居节点集合,R是关系集合,包括边类型AST、CFG和PDG;c
i,r
是一个用于计算与节点i存在关系r的邻居节点个数;表示对于关系r的转移矩阵,是一个自连接项,用于确保节点在l次迭代的特征表示也对l+1次迭代的特征表示产生影响;σ(
·
)是激活函数;步骤3
‑
3,基于得到的节点特征,通过对特征嵌入向量进行求和,在图级进行节点聚合,并利用多类别交叉熵损失函数softmax训练分类器,以得到缺陷检测模型。5.根据权利要求1所述的可知识驱动的软件缺陷检测与分析方法,其特征在于,步骤4所述对待检测项目进行处理,输入最优的检测模型中,检测项目中存在的缺陷,并将检测到的缺陷依据其缺陷类型与缺陷数据集中的同类型已知缺陷进行相似度计算,匹配相似度最高的已知缺陷,具体过程包括:步骤4
‑
1,将...
【专利技术属性】
技术研发人员:薄莉莉,曹思聪,孙小兵,李世豪,李斌,
申请(专利权)人:扬州大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。