当前位置: 首页 > 专利查询>重庆大学专利>正文

基于阈值操作的代价敏感神经网络的警告分类方法技术

技术编号:13975142 阅读:120 留言:0更新日期:2016-11-11 09:25
本发明专利技术涉及基于阈值操作的代价敏感神经网络的警告分类方法,包括S1使用FindBugs工具对目标软件一系列版本的jar文件进行分析,得到目标软件的静态警告;S2对S1获得的静态警告进行标注;S3采用代价敏感的BP神经网络,使用样本集中的样本训练分类器,采用该分类器对样本集中的所有样本进行分类,计算得到用于预测有效警告或误报警告的真实类别概率值,采用阈值操作的方式对真实类别概率值进行调整得到新类别概率值,使用该新类别概率值对样本集中的所有样本进行预测分类。本发明专利技术方法在有效警告查全率Recall方面平均提高了44.07%,还能快速达到较高而平稳的查全率,同时较传统神经网络方法能达到更低的分类代价。

【技术实现步骤摘要】

本专利技术涉及软件静态分析,尤其涉及软件静态警告的分类,具体涉及基于阈值操作的代价敏感神经网络的警告分类方法
技术介绍
在软件开发过程中,大量资源被消耗在发现和解决软件中的缺陷。除了一些大公司在开发过程中会使用自动化测试方法,在大多数中小规模的软件公司或项目团队中,软件的测试工作仍然停留在手工处理阶段。其测试任务往往繁重且低效,稍小的功能变动都需要回归测试其他功能,在资源有限以及时间紧迫的情况下,软件测试工作通常不能顺利的完成,造成仍有许多未被发现的错误遗留在软件系统中。测试手段的匮乏己经成为制约软件产出效率以及软件质量的瓶颈。鉴于此,动态分析和静态分析方法被分别提出,以在节约开发资源的前提下发现软件潜在的错误。动态分析需要编译执行程序,以观察该软件是否满足预先设置好的输出结果;静态分析通常对源代码或其相应的二进制文件进行分析,在不编译运行软件的情况下发现代码中是否存在不佳的编程实践。静态分析技术目标不在于证实软件是否输出正确或发现程序中的逻辑问题,而是作为动态分析方法的一种补充,在项目编码阶段尽可能地发现潜在问题,提高程序的鲁棒性和可靠性。静态分析技术可以自动化检测软件中可能造成程序崩溃的潜在异常代码块,如空指针引用、下标越界、代码风格不一致等,帮助开发人员在项目的初期阶段发现一些可能存在的代码安全隐患。目前,前沿的JAVA静态分析工具有FindBugs、PMD、Checkstyle等,本专利技术将这些静态分析工具分析报告的潜在异常信息统一称为警告。与测试和代码走查等代码质量控制手段不同的是,静态分析工具往往会报告大量的警告,平均每千行代码中有40个警告。这些警告中,既有开发人员认为重要并将进行修复的有效警告;也有对代码质量并不产生影响而将被忽略的误报警告。有研究发现,35‐91%的警告都是无关紧要的误报警告,而平均每个警告都需要花费有经验的开发人员5分钟时间进行评估。大量的误报警告将耗费大量的开发资源,这一因素严重阻碍了静态分析工具在开发过程中的普及。为了最大效应的利用静态分析工具,除了分析工具限制报告预先定义的低优先级警告外,大量警告分类技术与排序技术被不断提出。分类技术将警告预测为有效警告或误报警告;而排序技术则是根据警告被预测为有效警告的可能性对警告进行排序。通过提取警告特征,主要包括警告本身特征(分析工具定义)、源代码特征、代码仓库特征等,从简单的警告类型选择到复杂的机器学习算法分别被应用来减少误报警告,以提高静态分析工具的可用性。然而,在警告分类过程中存在两类问题:第一类为误分类造成代价不等问题,将一个误报警告归类为一个有效警告(误分类Ⅰ),和将一个有效警告归类为误报警告(误分类Ⅱ),所产生的代价是不等的,与软件缺陷预测类,误分类Ⅱ可能造成软件的崩溃,而误分类Ⅰ仅仅需要开发人员花费5分钟时间进行审查,即误分类Ⅱ的代价会远远高于误分类Ⅰ;第二类问题为类不平衡问题,如上文所述,误报警告可能占整体警告的绝大部分,本专利技术的实验数据也是类极不平衡的。以往的警告分类技术目的往往是降低分类的错误率,而忽略了上述不同分类错误所产生的不同代价,以及数据的不平衡问题。
技术实现思路
针对现有技术存在的上述问题,本专利技术的目的是提供一种尽可能降低警告分类后代价的一种警告分类方法。为实现上述目的,本专利技术采用如下技术方案:基于阈值操作的代价敏感神经网络的警告分类方法,其特征在于,包括如下步骤:S1:使用FindBugs工具对目标软件一系列版本的jar文件进行分析,得到目标软件的静态警告;S2:对步骤S1获得的静态警告进行标注;S2a:将目标软件一系列版本中,相邻两个版本中静态警告进行两两对比,如果前一个版本中警告在后一个版本中消失则认为该警告是有效警告;反之,如果前一个版本中的警告在后一个版本中仍然存在则认为该警告是误报警告;S2b:将有效警告中重复的有效警告剔除后,剩下的所有的有效警告构成有效警告集,将所有误报警告中重复的误报警告剔除后,剩下的所有误报警告构成误报警告集,有效警告集和误报警告集构成样本集;有效警告集中的有效警告和无效警告集中的无效警告均为样本集中的样本;S3:采用BP神经网络,使用样本集中的样本训练分类器,采用该分类器对样本集中的所有样本进行分类,计算得到用于预测有效警告或误报警告的真实类别概率值,采用阈值操作的方式对所述真实类别概率值进行调整得到新类别概率值,然后使用该新类别概率值对样本集中的所有样本进行预测分类,将样本集中的所有样本预测为有效警告或误报警告。作为优化,所述步骤S3具体如下:采用阈值操作的方式对样本集中的所有样本进行预测分类;a)令r=1;b)从样本集中选取十分之九分的样本构成训练样本集Qr,剩下十分之一的样本构成测试样本集Pr,且Qr≠Qr-1,Pr≠Pr-1;c)采用BP神经网络对训练样本集Qr进行训练得到分类器,然后将测试样本集Pr中的测试样本依次输入该分类器,计算得到用于预测有效警告或误报警告的真实类别概率值为Oi,i∈{Ⅰ,Ⅱ本文档来自技高网
...

【技术保护点】
基于阈值操作的代价敏感神经网络的警告分类方法,其特征在于,包括如下步骤:S1:使用FindBugs工具对目标软件一系列版本的jar文件进行分析,得到目标软件的静态警告;S2:对步骤S1获得的静态警告进行标注;S2a:将目标软件一系列版本中,相邻两个版本中静态警告进行两两对比,如果前一个版本中警告在后一个版本中消失则认为该警告是有效警告;反之,如果前一个版本中的警告在后一个版本中仍然存在则认为该警告是误报警告;S2b:将有效警告中重复的有效警告剔除后,剩下的所有的有效警告构成有效警告集,将所有误报警告中重复的误报警告剔除后,剩下的所有误报警告构成误报警告集,有效警告集和误报警告集构成样本集;有效警告集中的有效警告和无效警告集中的无效警告均为样本集中的样本;S3:采用BP神经网络,使用样本集中的样本训练分类器,采用该分类器对样本集中的所有样本进行分类,计算得到用于预测有效警告或误报警告的真实类别概率值,采用阈值操作的方式对所述真实类别概率值进行调整得到新类别概率值,然后使用该新类别概率值对样本集中的所有样本进行预测分类,将样本集中的所有样本预测为有效警告或误报警告。

【技术特征摘要】
1.基于阈值操作的代价敏感神经网络的警告分类方法,其特征在于,包括如下步骤:S1:使用FindBugs工具对目标软件一系列版本的jar文件进行分析,得到目标软件的静态警告;S2:对步骤S1获得的静态警告进行标注;S2a:将目标软件一系列版本中,相邻两个版本中静态警告进行两两对比,如果前一个版本中警告在后一个版本中消失则认为该警告是有效警告;反之,如果前一个版本中的警告在后一个版本中仍然存在则认为该警告是误报警告;S2b:将有效警告中重复的有效警告剔除后,剩下的所有的有效警告构成有效警告集,将所有误报警告中重复的误报警告剔除后,剩下的所有误报警告构成误报警告集,有效警告集和误报警告集构成样本集;有效警告集中的有效警告和无效警告集中的无效警告均为样本集中的样本;S3:采用BP神经网络,使用样本集中的样本训练分类器,采用...

【专利技术属性】
技术研发人员:葛永新潘志辉徐玲洪明坚杨梦宁张小洪杨丹王洪星黄晟
申请(专利权)人:重庆大学
类型:发明
国别省市:重庆;50

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

1