[发明专利]一种基于代码修改模式差异的缺陷纠错方法有效
申请号: | 201910170495.5 | 申请日: | 2019-03-07 |
公开(公告)号: | CN109918127B | 公开(公告)日: | 2022-02-11 |
发明(设计)人: | 魏颖;孙小兵;李斌 | 申请(专利权)人: | 扬州大学 |
主分类号: | G06F8/75 | 分类号: | G06F8/75 |
代理公司: | 南京苏科专利代理有限责任公司 32102 | 代理人: | 董旭东;赵荔 |
地址: | 225000 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 代码 修改 模式 差异 缺陷 纠错 方法 | ||
本发明提供了软件维护技术领域内的一种基于代码修改模式差异的缺陷纠错方法,包括以下步骤:先通过爬虫获取缺陷检索平台Bugzilla中状态为已解决的缺陷报告,按照缺陷报告ID的顺序将以不重复关系连接起来的缺陷报告形成一个簇;再利用TF‑IDF算法对各簇内缺陷的标题和描述进行关键词提取,并对其余缺陷报告进行关键词提取,并加入相应关键词的簇中;其次,对比每两个报告提交的源代码,得到代码克隆对,查找出每个缺陷报告中有源代码克隆部分的diff信息,分别对每份diff信息做修改模式差异图;最后,计算差异比例,判断缺陷的修改是否存在问题;本发明帮助开发人员更快速便捷地查找出已修改缺陷存在的问题。
技术领域
本发明属于软件维护技术领域,特别涉及一种基于代码修改模式差异的缺陷纠错方法。
背景技术
现今,随着科技的不断发展,智能时代的兴起,人们对软件的需求越来越多。当开发人员在软件开发和维护过程中遇到一些不能解决的缺陷问题时,他们往往需要通过检索一些开源的软件缺陷平台来获取更多的缺陷相关信息,如GitHub(一个面向开源及私有软件项目的托管平台)、Stack Overflow(一个与程序相关的IT技术问答网站)、Bugzilla(一个开源的缺陷跟踪系统)等平台。但有时开发人员发现状态为resolved、verified或closed的缺陷报告重新出现了问题,所以状态更改为reopened,如图1。目前,针对软件缺陷平台,已有一些研究内容使开发人员的缺陷修复更加便利,例如版本控制系统和缺陷追踪系统将软件历史库中已有的缺陷报告进行整合,并提供给软件开发人员进行搜查和参考,以此来帮助他们根据得到的缺陷相关信息来进行缺陷修复,但并没有研究是针对检测已修复缺陷是否存在问题的研究。
在缺陷平台中,只有当缺陷报告提出者发现缺陷修复存在问题时才会将缺陷的状态更改为reopened,并进行后续的研究和修复,现有的针对缺陷平台的研究只是为开发人员新提出的缺陷提供一些信息以供参考修复,却忽略了已修复缺陷中是否存在问题这一点。
发明内容
针对现有技术中的缺陷,本发明的目的在于克服现有技术中的不足之处,提供一种基于代码修改模式差异的缺陷纠错方法,解决现有技术中无法检测出已修复缺陷是否存在问题的技术难题,此方法可检测已解决的缺陷可能存在的问题,节省发现缺陷修复问题的时间,增强开发人员的缺陷修复经验。
本发明的目的是这样实现的:基于代码修改模式差异的缺陷纠错方法,包括以下步骤:
(1)通过爬虫获取缺陷检索平台Bugzilla中状态为resolved的缺陷报告,包括其title(标题)、description(描述)、缺陷间关系以及代码部分,并进行数据清洗,再按照缺陷报告ID(序号)的顺序将以duplicate关系连接起来的缺陷报告形成一个簇;
(2)利用TF-IDF(term frequency–inverse document frequency)算法对各簇内缺陷的title和description进行关键词提取,作为该簇的主题词;
(3)在确认好簇的主题词后,再利用TF-IDF算法对其余缺陷报告进行关键词提取,并加入相应关键词的簇中;
(4)对于每个簇中的报告,运用一种称为CDLH的代码克隆检测算法对比每两个报告提交的源代码,并得到代码克隆对,查找出每个缺陷报告中有源代码克隆部分的diff信息,并分别对每份diff信息做修改模式差异图;
(5)计算差异比例,若差异比例不小于65~75%,则认为两者大多做了同种修改,则其余缺陷的修改可能存在问题,并将有修复问题的缺陷发送给报告提出者进行重新检验、修复。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于扬州大学,未经扬州大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910170495.5/2.html,转载请声明来源钻瓜专利网。