[发明专利]一种轻量级的软件缺陷预测方法在审
| 申请号: | 202011532907.4 | 申请日: | 2020-12-22 |
| 公开(公告)号: | CN112527675A | 公开(公告)日: | 2021-03-19 |
| 发明(设计)人: | 包嘉盛;任洪敏 | 申请(专利权)人: | 上海海事大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F21/56;G06F21/57 |
| 代理公司: | 上海互顺专利代理事务所(普通合伙) 31332 | 代理人: | 裴姣姣 |
| 地址: | 201306 上海市*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 轻量级 软件 缺陷 预测 方法 | ||
1.一种轻量级的软件缺陷预测方法,使用代码质量管理系统,代码质量管理系统是一个基于B/S模式的Web应用程序,整个技术体系结构分为四个部件:用户管理部件、缺陷分析部件、缺陷预测部件、缺陷展示部件;用户管理部件负责用户的注册和登录以及给员工分配角色和设置相关信息的管理,每个用户都会分配一个角色、每个角色有不同的权限,通过分配不同的角色和权限能够达到员工管理的功能;缺陷分析部件负责分析用户提交项目的代码,并生成项目分析报告,新报告内缺陷数据与历史缺陷数据做对比,判断新增的缺陷和修复了哪些缺陷,最后把结果存入数据库内;缺陷预测部件通过FBCM算法对项目缺陷进行分析,进而产生频繁项集和关联规则,通过频繁项集获取哪些容易发生的缺陷;关联规则发现接下来哪些缺陷容易发生,起到了预测的作用;缺陷展示部件负责展示具体项目的缺陷信息、有缺陷类型占比、缺陷数量和类型、以及预测下次可能出现的缺陷;缺陷展示部件负责展示具体项目的缺陷信息、有缺陷类型占比、缺陷数量和类型、以及预测下次可能出现的缺陷;用户管理部件依据用户的权限使缺陷展示部件展示不同权限查看的项目结果;缺陷分析部件产生分析结果的数据进入缺陷预测部件进行预测;缺陷预测部件产生的数据结构在缺陷展示部件展示;其特征在于,所述轻量级的软件缺陷预测方法包含以下步骤:
S1、系统获取用户提交至所述代码质量系统的代码;
S2、使用代码静态分析工具Spotbugs分析提交的Java代码,获得代码缺陷分析报告;若该项目存在过去提交的历史数据,则只分析修改或新增的代码文件;
S3、从数据库中获取本项目历史缺陷数据,对本次新生成的报告中的缺陷与历史缺陷做比对,以此记录修复和新增的缺陷;根据缺陷类型和缺陷数量对项目进行评分;若是过去就已存在的缺陷不做处理,若是新缺陷则将这条缺陷记录的缺陷类型、缺陷位置、产生时间、代码作者信息存入数据库中;若本次报告中无历史未解决的缺陷,说明本次提交的代码已经修复此缺陷,则将次缺陷状态改为已解决,并标注修复时间存入数据库中;根据缺陷类型和缺陷数量对项目进行评分、如出现只要一个高危缺陷、项目评级就为最低;若只有个别不重要缺陷,评分就相对较高;
S4、用户可根据需求自行输入关联算法的最小支持度或最小置信度,也可以使用默认设置;
S5、使用基于矩阵压缩的FUP优化算法FBCM算法对该项目进行关联算法分析,得到频繁项集和关联规则;遍历数据库,将每一天提交项目记录的代码缺陷作为一个事物,每个事物为一个集合,组成长度为1的备选1-项集,最小支持度和最小置信度使用默认值或者自定义,支持度和最小置信度计算方法如下;
Support(X→Y)=P(XY)≥minSupport;
Confidence(X→Y)=P(X|Y)≥min_Confidence;
其中min_Support,min_Confidence由用户设定或使用默认值;
对1-项备选集进行剪枝操作可以得到频繁1-项集,这些频繁1-项集则是该项目经常出现的缺陷;
基于事务矩阵挖掘关联规则,在挖掘过程中,每次迭代都分别压缩两个矩阵,减少解的搜索空间;对矩阵DB和db进行变换,将原始的事务数据库DB和增量数据库db分别转换为两个事务矩阵,再扫描1次数据库生成布尔矩阵;
MatrixDB=convert(DB);Matrixdb=convert(db);
根据频度1项集压缩矩阵:MatrixDB=compress1(MatrixDB,L1(DB+db));Matrixdb=compress1(Matrixdb,L1(DB+db));
根据频度k项集压缩矩阵:Matrix DB=compress2(MatrixDB,s,k)
Matrixdb=compress2(Matrixdb,s,k);其中s:支持度阈值;k:计算频繁k项集;
布尔矩阵通过计算频繁k项集的项集支持度是否满足最小支持度,将不满足条件的项删除压缩;在第k次迭代过程中,若列向量的个数小于最小支持度阈值s,则可以删除该列;若行向量的个数小于k,则可以删除该行;
基于事务矩阵挖掘关联规则,在挖掘过程中,每次迭代都需要分别压缩两个矩阵,以减少解的搜索空间;
利用已有的频繁项集L(DB),找出有原频繁项变成非频繁项的项,称为loser,找出loser并删除,L(DB)中剩下的项称为winner,将winner加入到总的频繁项集L(DB+db);找到增量数据库db中的新winner(由原非频繁项变为频繁项),将其加入到总频繁项集L(DB+db)中;新的频繁项集只可能在原DB频繁项集L(DB)和新增数据db频繁项集L(db)中产生;从频繁1项集逐步计算至最大频繁集为止;
计算置信度大于最小置信度的规则生成关联规则,用于预测接下来可能会产生的缺陷,当用户提交项目的代码之后,若出现的缺陷存在已有的关联规则中,那么由关联规则推导出的结果即是可能出现的代码缺陷,可以对软件缺陷进行预防;
S6、将生成的频繁项集和关联规则存入数据库中,并把本次项目分析的缺陷类型、详细信息、缺陷所在类数据返回给前端分析界面展示供用户查看。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海海事大学,未经上海海事大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011532907.4/1.html,转载请声明来源钻瓜专利网。





