【技术实现步骤摘要】
基于演化历史分析的代码克隆危害性评估方法
本专利技术属于软件工程
,具体涉及代码克隆的分类及其危害性评估方法,适用于软件维护和演化过程中的代码克隆(重复代码)分析。
技术介绍
代码克隆是指相似或相同的代码(可以是代码片段、方法、文件、模块等不同粒度),即重复代码。一组相似或相同的代码克隆拷贝称为一个克隆类,其中每一个拷贝成为一个克隆实例。代码克隆广泛存在于开源以及企业软件项目中,并被广泛认为是一种代码坏味道(badsmell),在软件设计质量、代码的一致性维护、缺陷传播等方面都有很多不利影响。然而,代码克隆存在很多不同类型,其产生也不全是因为代码复制粘贴。例如,有些代码克隆是由于代码自动生成而产生的,而有些代码克隆是由于通用API的共性使用模式或通用算法实现所产生的,这些代码克隆一般没有危害。为此,企业在面对遗留系统中的代码克隆问题时,需要对各种代码克隆进行分析和评价,确定其危害性从而为相应的重构决策提供依据和支撑。
技术实现思路
本专利技术的目的是为企业代码库提供一种基于历史演化分析的代码克隆危害 ...
【技术保护点】
1.基于演化历史分析的代码克隆危害性评估方法,主要针对代码克隆由于一致性修改以及由此带来的代码缺陷而产生的危害,一致性修改是指多个克隆实例之间需要进行相似的代码修改,代码缺陷是指由于某些克隆实例遗漏所需要的代码修改而导致缺陷;其特征在于,危害性评估的具体步骤为:/n(1)代码克隆检测;/n从版本库中检出一个或多个目标软件系统的当前最新版本快照,利用代码克隆检测工具检测其中的代码克隆,产生代码克隆类及其实例;/n(2)代码克隆演化历史追溯;/n针对待分析的代码克隆类中的每一个克隆实例,基于来自版本库的代码提交历史和来自缺陷库的缺陷报告列表,进行代码克隆演化历史追溯;/n(3) ...
【技术特征摘要】
1.基于演化历史分析的代码克隆危害性评估方法,主要针对代码克隆由于一致性修改以及由此带来的代码缺陷而产生的危害,一致性修改是指多个克隆实例之间需要进行相似的代码修改,代码缺陷是指由于某些克隆实例遗漏所需要的代码修改而导致缺陷;其特征在于,危害性评估的具体步骤为:
(1)代码克隆检测;
从版本库中检出一个或多个目标软件系统的当前最新版本快照,利用代码克隆检测工具检测其中的代码克隆,产生代码克隆类及其实例;
(2)代码克隆演化历史追溯;
针对待分析的代码克隆类中的每一个克隆实例,基于来自版本库的代码提交历史和来自缺陷库的缺陷报告列表,进行代码克隆演化历史追溯;
(3)一致性修改过程分析;
针对待分析的代码克隆类的每两个实例构成的克隆实例对,以较晚引入的克隆实例的引入时间为起点,以当前最新版本为终点,基于这段时间之内它们的代码克隆演化历史,即只考虑这段时间之内的克隆实例变更操作,进行一致性修改过程分析:
(4)代码克隆危害分析;
根据待分析的代码克隆类中所有的克隆实例对的一致性修改度量,进行克隆危害分析。
2.根据权利要求1所述的方法,其特征在于,步骤(2)中所述进行代码克隆演化历史追溯的流程为:
1)通过代码提交历史回溯找到首次引入该克隆实例的代码提交;
2)分析从该克隆实例首次引入到最新版本快照之间的代码提交历史,识别对该克隆实例进行了修改的变更操作,收集每一个变更操作的修改时间、修改类型、修改位置、修改内容信息,形成该克隆实例的变更操作集合;
3)根据代码提交与缺陷报告的关联关系(如代码提交消息中的缺陷报告ID)确定该克隆实例的每一个变更操作是否属于缺陷修复操作,即该变更操作所对应的代码提交目的是否是缺陷修复。
3.根据权利要求2所述的方法,其特征在于,步骤(3)中所述进行一致性修改过程分析的流程为:
1)对来自这两个克隆实例的变...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。