[发明专利]代码味道驱动的基于克隆和耦合检测的代码缺陷预测方法有效
申请号: | 201711005610.0 | 申请日: | 2017-10-19 |
公开(公告)号: | CN107678971B | 公开(公告)日: | 2021-05-04 |
发明(设计)人: | 孙小兵;周天驰;李斌 | 申请(专利权)人: | 扬州大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京中新达专利代理有限公司 32226 | 代理人: | 孙鸥;朱杰 |
地址: | 225009 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 代码 味道 驱动 基于 克隆 耦合 检测 缺陷 预测 方法 | ||
本发明涉及代码味道驱动的基于克隆和耦合检测的代码缺陷预测方法。本发明对所有代码利用代码味道识别技术进行代码味道检测,并计算代码片段中坏味道的数目;检测坏味道代码与所有代码之间的联系及数目;检测坏味道代码和所有代码之间的关联及数目;计算上述代码缺陷的概率;加权处理代码缺陷概率;按照缺陷概率将代码进行降序排序,并将缺陷代码和缺陷语义信息推荐给开发者。本发明克服了过去存在的测试成本高和可读性差的缺陷。本发明从代码味道角度,结合克隆、耦合检测技术,提供有效的代码检查推荐,帮助开发者找到代码缺陷,理解预测出来的代码缺陷所在和优先处理严重等级较高的代码缺陷,大大缩短软件开发周期。
技术领域
本发明属于软件分析与测试领域,特别涉及代码味道驱动的基于克隆和耦合检测的代码缺陷预测方法。
背景技术
软件缺陷(software defect)产生于开发人员的编码过程中,需求理解不正确、软件开发过程不合理或开发人员的经验不足,均有可能产生软件缺陷.而含有缺陷的软件在运行时可能会产生意料之外的结果或行为,严重的时候会给企业造成巨大的经济损失,甚至会威胁到人们的生命安全.在软件项目的开发生命周期中,检测出内在缺陷的时间越晚,修复该缺陷的代价也越高.尤其在软件发布后,检测和修复缺陷的代价将大幅度增加.因此,项目主管借助软件测试或代码审查等软件质量保障手段,希望能够在软件部署前尽可能多地检测出内在缺陷.但是,若关注所有的程序模块会消耗大量的人力物力,因此,项目主管希望能够预先识别出可能含有缺陷的程序模块,并对其分配足够的测试资源。
在本发明作出之前,为了帮助软件开发人员尽可能的节省发现缺陷的成本,有些学者利用先进的机器学习算法构建出精度优秀的分类器。但是,这些分类器往往关注的是软件缺陷预测的精度,其基本的操作流程是输入一些待测试的代码,经过分类器预先定义的度量进行预处理,然后将预处理得出的信息利用构建好的分类器进行分类,将代码分类为有缺陷的和无缺陷的。虽然目前缺陷预测的精度有的达到90%的精确度,但往往由于真实项目数据量巨大,目前的精度下投入的测试成本仍然较高,这使得很多优秀的分类器往往无法为真实世界的开发者提供帮助,而其返回的有缺陷的代码也仅仅是一些抽象的标记,对于代码开发者和维护者没有较好的可读性。此外目前的缺陷预测技术还需要一些人工标注,这样才能为机器学习技术提供训练集,这样就使得缺陷预测过程无法自动化地完成。
发明内容
本发明的目的就是要克服上述缺陷,研发出代码味道驱动的基于克隆和耦合检测的代码缺陷预测方法。
本发明技术方法是:
代码味道驱动的基于克隆和耦合检测的代码缺陷预测方法,其主要技术特征在于如下步骤:
(1)对所有代码利用代码味道识别技术进行代码味道检测,并计算代码片段中坏味道的数目;
(2)根据克隆关系检测步骤(1)中坏味道代码与所有代码之间的联系,统计每个坏味道代码与其他代码关联的数目;
(3)根据语义耦合、语法耦合检测步骤(1)中坏味道代码和所有代码之间的关联,统计每个坏味道代码与其他代码关联的数目;
(4)利用定义好的概率计算公式计算步骤(1)中代码缺陷的概率;
(5)利用定义好的计算公式计算步骤(2)和步骤(3)的代码缺陷概率;
(6)加权处理步骤(4)和步骤(5)的代码缺陷概率;
(7)按照缺陷概率将代码进行降序排序,并将缺陷代码和步骤(1)、(2)、(3)得到的缺陷语义信息推荐给开发者。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于扬州大学,未经扬州大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711005610.0/2.html,转载请声明来源钻瓜专利网。