大规模开源代码复用检测及度量工具的设计与实现

来源 :北京大学 | 被引量 : 0次 | 上传用户:gaoxuan1234
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
复用是帮助提高软件开发效率的一种有效手段。研究表明,在大多数软件系统中,有5%至20%的代码在系统内部有复用现象。同时开源项目的兴盛使得复用其他项目的代码简单易行。然而,在成千上万的开源项目中如何找到高质量的代码进行复用是软件实践者面临的一个重要问题。并且复用本身也会带来问题,特别地,如果一段代码中发现了缺陷,如何找到复用了这段代码的其他文件,以帮助排除缺陷也是软件工程非常关注的问题。最后,被复用的广泛程度也逐渐成为项目成功的一个重要指标,开发者们迫切希望了解怎样才能让项目的代码更容易被复用。为了帮助解决上述问题,检测并度量软件项目中的代码复用是软件工程领域经常采用的技术方法。  目前已有许多代码复用的检测工具和研究成果,但代码复用度量相关的研究相对较少。复用检测工具大致上可以分成两类。一类以CCFinder、CloneDR等代码克隆检测工具为主。它们具有较高的准确率和召回率,但可扩展性有限,难以检测大规模数据中的代码复用情况。另外一类,例如Ichi Tracher、GoogleCode Search等基于关键词匹配的代码检索工具,它们能够处理较大规模的数据,但会遗漏一些经过了少许修改的代码复用情况。在代码复用方面,一些研究尝试寻找了被复用最广泛的功能模块,但并未对复用广泛程度予以度量,也并未对版本控制系统,复用方式等因素给代码复用带来的影响做出分析。综上所述,对于大规模代码复用的检测和度量,主要有以下两个挑战:1、如何才能设计出一个检测大规模代码复用的算法?使之能够应对成千上万个工程的情况,并达到较高的准确率。2、在大规模数据的基础上,如何度量文件和功能模块的复用程度?如何找到影响复用广泛程度的因素?  针对上述问题和挑战,本文设计并实现了一个大规模代码复用检测与度量工具,用其检测并度量了一个包含15万工程,总计约10TB的数据源的代码复用情况,并对结果进行了分析和总结。本文的贡献主要在于:1、设计并实现了一个检测代码复用的算法。与同类工具相比,算法能够在保持较高的检测准确率和召回率的同时,高效地处理更大规模的数据。2、设计并实现了一套大规模代码复用的度量和分析方法,对复用的广泛程度予以度量,并帮助分析版本控制系统等因素给代码复用带来的影响。3、对于一个包含15万工程的开源数据源进行了代码复用的检测和度量,并通过对结果的讨论和分析,对开源社区中代码复用的规律进行了一些总结。
其他文献
传感器的种类繁多价格低廉,它们监控着世界上的各种变化,产生了大量的数据。对这些数据进行处理和整合,可以得到对现实生活更真实和准确的描述。传感器数据共享平台SenMart能够
随着我国市场经济和信息技术的不断发展,企业对科学化财务管理的需求越来越强烈,财务管理系统作为企业财务管理信息化系统的软件平台,对提高企业财务部门工作效率、提高企业
近年来,随着Web应用和HTML5的普及,Web安全问题也日益突出。OWASP公布的2013年十大Web应用安全风险中,跨站脚本漏洞XSS(Cross Site Scripting)名列第三,已成为当前各类Web应
电网需求侧用电管理是智能电网的一个重要组成部分,居民生活用电在电网需求侧占据相当重要的位置,对电力系统用电和配电的影响越来越明显。在电力系统运营中,对小区用户用电进行
随着科技水平的不断发展,人们对计算能力的要求也随之增高,因此,片上多核处理器已经成为主流处理器发展的趋势。伴随着片上多核处理器集成的核数越来越多,DRAM内存系统承受的
随着信息技术与生物技术的飞速发展,人脸识别技术在各领域的应用越来越广泛。本文以Olivetti Research Laboratory(ORL)人脸库和Yale人脸库为研究对象,对人脸识别技术中的特
P2P系统中冷门文件(依据种子数或副本数)凭借其巨大的数量基数,收到不容忽视的用户请求比例。然而,由于冷门文件在P2P系统中缺少足够的上线副本,下载该类文件通常会遭遇文件不可用
该文对经典关联规则的开采算法进行了较全面和深入的研究,并基于国产数据库管理系统DM2设计和部分实现了一个集成的关联规则开采系统原型。主要研究内容如下:该文首先研究了经
近年来,随着我国经济飞速发展,知识产权的重要性日益突出,而专利是知识产权中的重要组成部分,其重要性是不言而喻的。互联网的快速发展将人们置身于一片信息的海洋。如何从不计其
音视频播放是计算机系统中的典型应用之一。针对高清晰度音视频解码数据量大、计算复杂度高的特点,通常基于通用处理器和专用解码器的硬件结构,采用片上异构多核协同的方法实现