修改日志驱动的克隆代码跟踪与演化模式分析

需积分: 9 1 下载量 95 浏览量 更新于2024-09-11 1 收藏 786KB PDF 举报
“本文提出了一种基于修改日志的克隆代码跟踪方法,旨在解决现有技术在跟踪软件开发过程中克隆代码变化时存在的问题。通过三种视角(克隆群、克隆片段、克隆代码内容)识别克隆代码的演化模式,并在6款开源软件上进行了实验,验证了方法的有效性。” 在软件开发中,克隆代码,即重复或高度相似的代码段,是常见的现象。这些克隆代码可能由于快速开发、代码复用或者程序员习惯而产生。然而,随着时间推移,克隆代码可能会独立演变,导致维护困难和bug的传播。传统的克隆跟踪方法通常基于软件的发布版本,忽略了开发过程中的变化信息,这限制了对克隆代码演化的理解和管理。 该论文的研究重点在于利用修改日志来追踪这些变化。修改日志记录了每次提交的详细信息,包括代码的添加、删除和修改,因此可以提供更精确的克隆代码动态。首先,论文将每个提交视为一个小版本,利用NiCad工具进行克隆检测。接着,基于Token编辑距离相似度建立克隆群的初步映射。随后,通过分析修改日志,进一步精确地映射克隆片段。再者,根据克隆片段的映射结果修正克隆群的映射关系,确保了跟踪的准确性。最后,从克隆群、克隆片段和克隆内容三个角度识别出不同的演化模式,如稳定演化、分离演化、合并演化、一致变化演化和不一致变化演化。 实验结果显示,超过97%的克隆代码遵循稳定演化模式,而分离和合并演化模式以及复杂的演化模式出现频率极低。一致变化和不一致变化演化模式的比例也保持在较低水平。此外,与同类工具gCad相比,该方法在查全率和查准率上均有2%的提升,并且运行速度更快。 这项研究为理解软件演化过程中克隆代码的行为提供了新的视角,有助于改进软件维护策略,降低维护成本。同时,提出的基于修改日志的克隆代码跟踪方法为未来的软件质量保证和演化分析提供了有效工具。