System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于多任务贝叶斯图神经网络的组合形式化分析方法技术_技高网

一种基于多任务贝叶斯图神经网络的组合形式化分析方法技术

技术编号:41268216 阅读:4 留言:0更新日期:2024-05-11 09:23
本发明专利技术公开一种基于多任务贝叶斯图神经网络的组合形式化分析方法,属于软件缺陷预测领域;包含程序拓扑结构、代码度量特征、静态分析特征和形式化分析特征的多维融合图特征,结合多任务贝叶斯图神经网络模型进行软件缺陷预测,可深度反映程序的逻辑结构以及潜在的缺陷。可以解决已有的基于深度学习的软件缺陷预测方法无法充分利用软件逻辑信息和代码拓扑结构,导致最终结果精度较低的问题;可以解决已有缺陷预测方法仅能进行单一缺陷预测任务的问题,同时进行软件缺陷倾向性、位置和类型的预测;可以解决已有缺陷预测方法无法给出预测结果不确定性信息的问题。

【技术实现步骤摘要】

本公开属于软件缺陷预测领域,具体涉及一种基于多任务贝叶斯图神经网络的组合形式化分析方法


技术介绍

1、软件缺陷预测是软件质量控制的重要内容。随着计算能力的不断发展,形式化分析技术也在各类软件中得到广泛应用。与静态分析等传统分析方法相比,形式化分析通过将程序进行模型化或符号化抽象,可直接将软件同需求或规范进行比较,可提供更加全面可靠的分析结果,大大减少误报和漏报潜在软件缺陷的现象。但在实际软件项目中,形式化分析方法受制于分析规模有限、程序依赖复杂等问题,无法完全正确地反映程序地内部逻辑,因而误报和漏报现象依然存在。

2、为了解决此类问题,目前主要有两种解决方案。其一为使用深度学习技术,对单一形式化工具的分析报告进一步处理;另一方案为串行的形式化分析集成方法,先进行模型检测分析,后进行符号执行分析,这样可以避免模型检测方法循环展开次数有限的问题。此两种方案均可减少误报现象,但前者仅可分析单一形式化工具支持的软件缺陷类型,而后者可分析的软件缺陷类型仅限为两类方法的交集,两种方案可分析的软件缺陷种类均较为有限,因而无法检测出软件存在的其它故障类型,故漏报率依然较高。

3、因此,研究一种组合形式化分析方法进行软件缺陷预测,可综合多种形式化分析的结果,同时降低误报和漏报率,扩展可分析的缺陷类型范围,对提升软件质量具有重要的意义。并且,在深度学习技术方面,已有的方法未引入不确定性机制,无法给出预测结果的不确定性信息,对项目决策和风险评估的意义较为受限。此外,已有的处理形式化方法分析报告的深度学习模型,仅对代码的缺陷倾向性、位置或类型其中之一进行预测,系单一任务学习模型,若要完成多种预测任务,则需采用其它不同的预测方法,大大增加缺陷预测的复杂性。

4、鉴于此,本专利技术提出一种基于多任务贝叶斯图神经网络的组合形式化分析方法。


技术实现思路

1、针对现有技术的不足,本公开的目的在于提供一种基于多任务贝叶斯图神经网络的组合形式化分析方法能够基于目标软件已知缺陷情况的历史代码,对未知缺陷情况的新开发代码中的缺陷进行预测,可以解决已有的基于深度学习的软件缺陷预测无法充分利用软件逻辑信息和代码拓扑结构,导致最终结果精度较低的问题。

2、本公开的目的可以通过以下技术方案实现:

3、一种基于多任务贝叶斯图神经网络的组合形式化分析方法,包括以下步骤:

4、s1:将目标软件历史代码转化为控制流图,并根据函数调用关系构建图拓扑特征;

5、s2:对图拓扑特征的每一个节点的代码进行度量,获取节点的语句数量信息和谓词数量信息,作为节点的代码度量特征;

6、s3:通过静态分析和形式化分析两类方法分析被测软件,获得两类方法在软件历史版本代码上产生的告警信息;

7、s4:将节点的静态分析特征、形式化分析特征和代码度量特征组合为多维融合图特征,并输入贝叶斯图神经网络模型中,完成训练与调优;

8、s5:对目标软件待测代码重复执行上述步骤,得到待测多维融合图特征;

9、s6:将待测多维融合图特征输入训练好的贝叶斯图神经网络模型,得到待测代码的缺陷倾向性、缺陷类型和缺陷位置预测结果及置信度。

10、进一步地,s3的具体步骤如下:设所需分析的缺陷种类集合为cf,若存在p个静态分析工具sa1,sa2,…,sap、q个形式化分析工具fa1,fa2,…,faq,那么每种静态工具和形式化工具可给出的缺陷类型告警分别可记作:c_sa1,…,c_sap和c_fa1,…,c_fap。由于不同工具给出的告警类型不同,因此须先将这些告警类型统一映射至cf。其中,若某工具产生不包含于cf的缺陷类型的告警,则直接丢弃此类告警信息。

11、节点j对应的代码行数为beginlinej~endlinej,那么若存在beginlinej~endlinej之间的某静态分析工具或形式化分析工具的告警信息,就说明该分析工具在此节点上产生告警,需要记录工具告警的名称;如果不存在告警信息,则说明此节点此分析方法未产生告警,记作none。随后,将不同静态分析工具的结果sa_res1,sa_res2,…,sa_resp,以及不同形式化分析工具的分析结果fa_res1,fa_res2,…,fa_resq使用独热编码方式进行编码,则每种工具的结果可编码为card(cf)+1列,亦即cf种所有缺陷告警类型外加无缺陷告警的情况,得到(card(cf)+1)·(p+q)维的工具告警特征。随后通过pca算法,将工具告警特征降维至2维,记作feature_toolalert,其包含了节点的静态分析特征和形式化分析特征。

12、通过静态代码度量工具,将节点j的语句数量exprnumj、谓词数量predicatenumj组成二维向量feature_metrics=(exprnumj,predicatenumj)。最终,拼接向量feature_metrics与向量feature_toolalert,得到图拓扑特征的每个节点的特征向量feature,如下式所示,其中⊕代表向量间拼接。:

13、feature=[feature_metrics⊕feature_toolalert]

14、为每一个控制流图cfg(fi)的每一个节点添加节点特征featuei后,得到目标代码的多维融合图特征g(fi),作为贝叶斯图神经网络的输入。

15、根据图拓扑特征中每个节点对应实际文件名与行号,从步骤1得到的缺陷信息库中搜索缺陷信息数据,作为每个节点是否存在缺陷的标签。

16、一种基于形式化分析和多维融合图特征软件缺陷预测系统,包括以下组件:

17、代码转换组件,用于将目标软件历史代码转化为控制流图,并根据函数调用关系构建图拓扑特征;

18、代码度量组件,用于对图拓扑特征的每一个节点的代码进行度量,获取节点的语句数量信息和谓词数量信息,作为节点的代码度量特征;

19、分析工具组件,用于通过静态分析和形式化分析两类方法分析被测软件,获得两类方法在软件历史版本代码上产生的告警信息;

20、特征融合组件,用于将节点的静态分析特征、形式化分析特征和代码度量特征组合为多维融合图特征;

21、贝叶斯图神经网络模型组件,用于接收多维融合图特征以及对应的缺陷倾向性、缺陷位置和缺陷类型标签,并完成训练与调优;

22、预测输出组件,用于将待测多维融合图特征输入训练好的贝叶斯图神经网络模型组件,并输出待测代码的缺陷倾向性、缺陷类型和缺陷位置预测结果及置信度。

23、一种存储介质,存储有一种基于多任务贝叶斯图神经网络的组合形式化分析方法。

24、本公开的有益效果:

25、1、本专利技术能够基于待分析的软件已知缺陷情况的历史各个版本代码,对新开发的代码中存在的缺陷进行预测;

26、2、本专利技术从代码中提取包含程序拓扑结构、代码度量特征、静态分析特征和形式本文档来自技高网...

【技术保护点】

1.一种基于多任务贝叶斯图神经网络的组合形式化分析方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种基于多任务贝叶斯图神经网络的组合形式化分析方法,其特征在于,所述贝叶斯图神经网络模型训练包括如下步骤:收集待分析的软件各个历史版本的缺陷信息,作为后续缺陷预测模型训练时的标签。

3.根据权利要求1或2所述的一种基于多任务贝叶斯图神经网络的组合形式化分析方法,其特征在于,所述贝叶斯图神经网络模型训练包括如下步骤:通过静态分析和形式化分析两类方法分析被测软件,获得两类方法在软件历史版本代码上产生的告警信息。

4.根据权利要求1所述的一种基于多任务贝叶斯图神经网络的组合形式化分析方法,其特征在于,所述构建图拓扑特征的具体步骤如下:

5.根据权利要求1所述的一种基于多任务贝叶斯图神经网络的组合形式化分析方法,其特征在于,所述构建多维融合图特征的具体步骤如下:

6.根据权利要求1所述的一种基于多任务贝叶斯图神经网络的组合形式化分析方法,其特征在于,所述图拓扑特征的每个节点的特征包括以下四个维度:

7.根据权利要求1所述的一种基于多任务贝叶斯图神经网络的组合形式化分析方法,其特征在于,所述贝叶斯图神经网络模型包括图卷积神经网络层、贝叶斯图模型层、概率池化层和输出层。

8.根据权利要求1所述的一种基于多任务贝叶斯图神经网络的组合形式化分析方法,其特征在于,所述静态分析方法使用FlawFinder和Semgrep两种静态分析工具对目标代码进行扫描分析;

9.一种基于形式化分析和多维融合图特征软件缺陷预测系统,其特征在于,包括以下组件:

10.一种存储介质,其特征在于,存储有权利要求1-8所述的一种基于多任务贝叶斯图神经网络的组合形式化分析方法。

...

【技术特征摘要】

1.一种基于多任务贝叶斯图神经网络的组合形式化分析方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种基于多任务贝叶斯图神经网络的组合形式化分析方法,其特征在于,所述贝叶斯图神经网络模型训练包括如下步骤:收集待分析的软件各个历史版本的缺陷信息,作为后续缺陷预测模型训练时的标签。

3.根据权利要求1或2所述的一种基于多任务贝叶斯图神经网络的组合形式化分析方法,其特征在于,所述贝叶斯图神经网络模型训练包括如下步骤:通过静态分析和形式化分析两类方法分析被测软件,获得两类方法在软件历史版本代码上产生的告警信息。

4.根据权利要求1所述的一种基于多任务贝叶斯图神经网络的组合形式化分析方法,其特征在于,所述构建图拓扑特征的具体步骤如下:

5.根据权利要求1所述的一种基于多任务贝叶斯图神经网络的组合形式化分析方法,其特征在于,所述构...

【专利技术属性】
技术研发人员:杨顺昆侯展意邵麒杨明浩段峙宇佘志坤
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1