摘要:代码克隆(code clone),是指存在于代码库中两个及以上相同或者相似的源代码片段.代码克隆相关问题是软件工程领域研究的重要课题.代码克隆是软件开发中的常见现象,它能够提高效率,产生一定的正面效益.但是研究表明,代码克隆也会对软件系统的开发、维护产生负面的影响,包括降低软件稳定性,造成代码库冗余和软件缺陷传播等.代码克隆检测技术旨在寻找检测代码克隆的自动化方法,从而用较低成本减少代码克隆的负面效应.研究者们在代码克隆检测方面获得了一系列的检测技术成果,根据这些技术利用源代码信息的程度不同,可以将它们分为基于文本、词汇、语法、语义4个层次.现有的检测技术针对文本相似的克隆取得了有效的检测结果,但同时也面临着更高抽象层次克隆的挑战,亟待更先进的理论、技术来解决.着重从源代码表征方式角度入手,对近年来代码克隆检测研究进展进行了梳理和总结.主要内容包括:(1)根据源代码表征方式阐述并归类了现有的克隆检测方法;(2)总结了模型评估中使用的实验验证方法与性能评估指标;(3)从科学性、实用性和技术难点这3个方面归纳总结了代码克隆研究的关键问题,围绕数据标注、表征方法、模型构建和工程实践4个方面,阐述了问题的可能解决思路和研究的未来发展趋势.
Abstract:Code clone refers to more than two duplicate or similar code fragments existing in a software system. Code clone is a common phenomenon during software development which can facilitate development and has positive impacts on software system. However, research shows that code clone will also do harm to the development and maintenance of software system, including but not limited to the decline of stability, redundancy of source code repository, and propagation of software defects. Code clone is one of the most active research areas in software engineering. Therefore, various detection techniques are proposed to automatically detect code clone in software systems, which help improve software quality. There are a lot of achievements in this area, and these techniques can be categorized to text-based, lexis-based, syntax-based, and semantic-based categories. Current techniques have obtained effective results in text-based clone detection, but still challenges in detecting other types of code clone. More advanced and unified theoretic and technical guidelines are needed to improve code clone detection techniques. Therefore, in this paper, a literature review for code detection is presented especially from the perspective of source code representation. In summary, the contributions of this study are:(1) current code clone detection techniques are concluded and classified from the perspective of code representation; (2) the model validation and performance measures in model evaluation are concluded; and (3) the key issues of code clone research are summarized from three aspects:scientific, practical, and technical difficulties. The possible solutions to the problems and the future development of the research are elaborated, focusing on data annotation, characterization methods, model construction, and engineering practice.
PDF全文下载地址:
http://jos.org.cn/jos/article/pdf/5711
删除或更新信息,请邮件至freekaoyan#163.com(#换成@)
代码克隆检测研究进展
本站小编 Free考研考试/2022-01-02
相关话题/代码 软件 技术 信息 工程
性能非对称多核处理器下异构感知调度技术
摘要:为了满足应用程序的多样化需求,异构多核处理器出现并逐渐进入市场,其中的处理核心(core)具有不同的微架构或者指令集架构(ISA),为应用提供多样化特性支持,比如指令级并行(ILP)、内存级并行(MLP),这些核心协同工作满足整个计算系统的优化目标,比如高性能、低功耗或者良好的能效.然而,目前 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02智能数据管理与分析技术专刊前言
摘要:数据管理与智能计算的深度融合已经成为大数据时代顺利前行的迫切需求.智能数据管理旨在“为数据增添智能”,是数据科学与技术的重要基石,更是大数据产业蓬勃发展的关键支撑.一方面,将新一代人工智能方法应用于先进数据管理技术,尝试探索和突破智能数据管理与分析的理论体系、技术方法及系统平台,已经成为数据管 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02基于角色发现的动态信息网络结构演化分析
摘要:动态信息网络是当前复杂网络领域中极具挑战的新问题之一,对其动态的演化过程进行研究,有助于分析网络结构、理解网络特性、发现网络中潜在的信息及演化规律,具有重要的理论意义与应用价值.基于网络结构本身量化表示的复杂性以及网络演化时序、复杂、多变的挑战,使用角色来量化动态网络的结构,并对模型进行分析, ...中科院软件研究所 本站小编 Free考研考试 2022-01-02方法级别的细粒度软件缺陷定位方法
摘要:当软件缺陷报告在跟踪系统中被指派给开发人员进行缺陷修复之后,缺陷修复人员就需要根据提交的缺陷报告来进行软件缺陷定位,并做出相应的代码变更,以修复该软件缺陷.在缺陷修复的整个过程中,软件缺陷定位占用了开发人员大量的时间.提出了一种方法级别的细粒度软件缺陷定位方法MethodLocator,以提高 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02面向Android应用隐私泄露检测的多源污点分析技术
摘要:当前,静态污点分析检测Android应用隐私泄露存在误报率较高的问题,这给检测人员和用户带来很大的不便.针对这一问题,提出了一种多源绑定发生的污点分析技术.该技术可以精确地判断污点分析结果中多组源是否可以在一次执行中绑定发生,用户可以从单一分析1条结果转为分析有关联的多组结果,这既缩小了分析范 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02增强上下文的错误定位技术
摘要:错误定位就是寻找程序错误的位置.现有的错误定位方法大多利用测试用例的覆盖信息,以标识一组导致程序失效的可疑语句,却忽视了这些语句相互作用导致失效的上下文.因此,提出一种增强上下文的错误定位方法Context-FL,以构建上下文的方式来优化错误定位性能.Context-FL利用动态切片技术构建数 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02程序自动修复:关键问题及技术
摘要:程序自动修复技术能够有效地降低软件维护成本,是近年来学术研究的热点问题.待修复程序规约的刻画,对自动修复过程具有至关重要的作用.从规约的角度对程序自动修复问题和技术进行了分析梳理.从待修复程序是否具有完整的程序规约,将现有修复问题分为不完全规约、完全规约和半完全规约这3大类待修复问题.以3类抽 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02软件学科发展回顾特刊前言
摘要:Abstract:PDF全文下载地址:http://jos.org.cn/jos/article/pdf/5653 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02系统软件新洞察
摘要:系统软件是计算学科的基本概念之一,从系统软件的本质特征、时代特点和发展趋势这3个方面给出了关于系统软件的新洞察.洞察1认为,通用图灵机和存储程序思想是系统软件的理论源头和技术源头,其本质特征是"操纵计算系统执行",编码加载和执行管控是两种主要的操纵方式.洞察2认为,系统软件在互联网时代的时代特 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02软件开发方法发展回顾与展望
摘要:软件是信息化社会的基础设施,而构造并运用软件的能力成为一种核心竞争力.软件开发方法凝结了系统化的软件构造过程和技术.简要回顾了50年来软件开发方法发展历程中具有重要影响的里程碑,包括基于结构化程序设计和模块化开发的基本方法、面向对象方法、软件复用与构件化方法、面向方面的方法、模型驱动的方法,以 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02