【技术实现步骤摘要】
一种基于缺陷预测的软件静态检查警告排序优化方法
本专利技术属于计算机
,尤其是软件工程和软件质量保障。本专利技术提供了基于软件缺陷预测的结果对静态检查工具产生的警告信息进行排序优化的方法,帮助软件开发人员和质量保障人员高效地使用静态检查工具,发现和检测出软件中存在的潜在缺陷。
技术介绍
随着软件系统的日益强大,软件质量越来越受到人们的关注。软件缺陷指软件系统中由于软件设计缺陷、程序编码错误使得软件不能满足需求或者在程序运行中出现意料之外的结果和行为。严重的软件缺陷可能会导致巨大的经济损失甚至威胁人们生命安全。然而,发现和找到软件中的缺陷是一件很困难的事。目前,静态检查工具正广泛地应用于软件开发中,用于发现软件中存在的潜在缺陷,常用的静态检查工具包括FindBugs、PMD等。静态检查工具通过静态分析,发现程序源代码中存在的潜在错误和缺陷,诸如空指针引用、未初始化变量、缓冲区溢出等,向开发者提示各种警告信息,进而开发者审查警告信息对代码做出必要的修正。然而,静态检查工具往往会产生大量的警告,并且这些警告很有可能是 ...
【技术保护点】
1.一种基于缺陷预测的软件静态检查警告排序优化方法,其特征在于,从已知的软件系统中抽取软件模块度量信息,根据已知软件系统的缺陷追踪信息和版本控制与变更信息对软件模块是否有缺陷进行标注,利用模块度量信息和缺陷信息构建缺陷预测模型,使用缺陷预测模型来预测新系统的模块缺陷,并基于k-core分解的方法计算新系统模块的核心度,结合新系统的模块缺陷概率和模块核心度对新系统的静态检查后产生的静态警告进行排序,最终实现静态检查警告的排序优化,该方法包括下列步骤:/n1)获取一些已知软件系统的源代码、缺陷追踪信息、版本控制与变更信息;从缺陷追踪信息中获得软件系统包含的所有缺陷,从版本控制和 ...
【技术特征摘要】
1.一种基于缺陷预测的软件静态检查警告排序优化方法,其特征在于,从已知的软件系统中抽取软件模块度量信息,根据已知软件系统的缺陷追踪信息和版本控制与变更信息对软件模块是否有缺陷进行标注,利用模块度量信息和缺陷信息构建缺陷预测模型,使用缺陷预测模型来预测新系统的模块缺陷,并基于k-core分解的方法计算新系统模块的核心度,结合新系统的模块缺陷概率和模块核心度对新系统的静态检查后产生的静态警告进行排序,最终实现静态检查警告的排序优化,该方法包括下列步骤:
1)获取一些已知软件系统的源代码、缺陷追踪信息、版本控制与变更信息;从缺陷追踪信息中获得软件系统包含的所有缺陷,从版本控制和变更信息中获得为了修复缺陷所发生的代码变更和一些特定版本的源代码;
定义1:已知软件系统指的是源代码、缺陷追踪信息和版本控制与变更信息均可以获得的软件系统,已知软件系统的开发过程、历史信息是可获得的,用于缺陷预测模型的训练;
定义2:缺陷追踪信息是关于该软件系统的所有缺陷报告、缺陷修复情况的信息集合;
定义3:版本控制与变更信息是有关该软件系统的所有历史变更、变更提交说明、变更发生的时间、变更发生的代码变化的信息集合;
2)对源代码进行静态分析,抽取软件系统的模块信息以及模块度量信息;对步骤1中产生的特定项目的不同版本的源代码,使用静态分析工具和度量抽取工具获得软件项目中不同模块的信息,以及这些模块的度量信息;
定义1:软件模块指软件中为了实现某一特定功能而设计与实现的,具有一定独立性的代码片段,本发明考虑面向对象软件系统中的类和方法两个粒度的软件模块;
定义2:模块度量信息指对软件系统中的模块属性的定量分析,定量衡量模块的规模、复杂度以及模块与模块之间的关系,本发明考虑软件模块的规模度量、复杂性度量、Halstead软件科学法度量和面向对象度量;
3)根据已知软件系统的缺陷追踪信息、版本控制与变更信息对软件模块是否有缺陷进行标注;首先从缺陷追踪信息中筛选出其中已经被修复和确认的缺陷报告,获得这些缺陷的编号;然后,对所有变更信息进行匹配和筛选,筛选出所有与缺陷编号相关的变更信息;接着,对这些与缺陷编号相关的变更信息进行分析,定位发生变更的有缺陷代码行信息;再次,利用版本控制信息,对有缺陷的软件代码进行回溯,确定这些代码是何时引入到软件系统中的,确定这些缺陷在软件系统中的生命周期;最后,根据软件缺陷的生命周期对软件特定版本的模块进行缺陷标注;
定义1:缺陷编号指向缺陷追踪系统提交缺陷报告后,系统自动为该缺陷报告生成的唯一编号;
定义2:所有软件提交中,如果某一次代码变更提的提交说明中明确该次变更是用于修复某一个已知软件缺陷的,则该次变更提交是与缺陷相关的变更;
定义3:缺陷的生命周期指缺陷从初次引入到最终被修复之前的一段时间,开始于引入缺陷代码到软件系统的那次变更,结束于修复该缺陷的之前的一次变更;
定义4:在某一缺陷周期内发布的软件版本,都受该缺陷的影响,这些版本中与缺陷代码相对应的源代码都是有缺陷的源代码;
定义5:软件模块缺陷标注的结果是该软件每个模块源代码是否存在缺陷;
4)根据软件模块的度量信息与缺陷信息,使用机器学习算法构建缺陷预测模型;将已知软件系统的模块度量与缺陷信息,作为构建缺陷预测模型的训练集;然后,对度量进行特征选择;最后,运用机器学习方法,使用分类器(Logistic回归、支持向量机、决策树、随机森林、多层感知机)构建缺陷预测模型;
定义1:特征选择指从训练集的所有度量中,剔...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。