基于程序特征的代码相似性分析研究

来源 :北京邮电大学 | 被引量 : 0次 | 上传用户:re_man
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
代码克隆是软件开发过程中常见的开发方式,随着开源组件、代码复用技术和开发框架等技术在程序开发中扮演越来越重要的角色,克隆代码的数量也随之快速增长。虽然代码克隆在一定程度上提高了程序开发效率,但也对软件管理及维护产生了负面影响,包括软件缺陷传播、恶意代码传播等。代码相似性分析技术旨在通过自动化的方式对克隆代码进行检测,降低克隆代码带来的负面影响。同时,随着软件产业的不断发展,代码相似性分析技术也越来越深入地应用于软件版权保护、软件安全、程序抄袭检测等领域。因此,研究高效并准确的代码相似性分析技术成为一个愈发重要的问题。传统代码相似性分析技术中,基于文本内容的方法执行效率较高,但忽略了词法、语法等信息,准确性较差;基于图和树等语法结构的检测方案耗时过高,检测粒度也往往局限于函数级别和复杂语句块级别,较难应用到实际生产环境;同时,面向包含大规模插入修改的克隆代码,传统方案往往无法对其有效地识别和分析。针对已有技术的痛点,本文提出基于程序属性特征、符号特征以及上下文特征进行代码相似性分析研究,尽可能充分利用程序的有效信息,提高检测准确性,同时兼顾相似性分析过程的执行效率。(1)在程序特征提取方面,本文基于程序抽象语法树进行实现。其中上下文特征解决了以往方案中难以识别克隆代码内插入干扰内容过多的问题,提高了分析完整性和准确性,这也是本文的创新之处;符号特征及属性特征则包含了程序词汇信息及属性信息,三种特征为后续相似性分析提供支持。(2)在代码相似性分析方面,本文针对代码片段实现基于对应符号特征距离算法进行相似性分析,有效解决插入代码修改、更改变量名、修改代码布局等对分析带来的影响,并保证了分析过程的执行效率。(3)对于以往方案难以检测包含大规模插入修改的克隆代码的问题,本文提出了基于程序上下文特征对代码片段进行合并的算法,从而可以很好的解决这一问题。基于上述研究,本文以本实验室的软件安全性分析与验证工具系统为基础进行二次开发,构建完成代码相似性分析子系统,通过客户端软件向用户提供服务。通过对多个开源项目进行特征提取测试、相似性分析测试、同类产品横向对比测试,实验结果表明各项功能符合预期需求。
其他文献
近年来随着科学技术的飞速发展,软件研发项目所采用的技术类型也受到潜移默化的影响发生着迅猛的变化。例如增强现实(AR)和虚拟现实(VR)等新型技术,这些技术也在被广泛的应用于各行各业,使用这些新型技术研发的软件产品也如雨后春笋般出现。相比与传统的软件研发项目,这类项目的研发风险也会有所不同。因此对于这类新型技术的软件研发项目的风险管理研究尤为重要。本文是基于对D公司AR远程协助项目实施过程中项目风险
随着智能化时代的到来,各个行业都在尝试智能化发展。自动化喷涂在工业领域占据了一个重要领域,广泛应用于航空、军事、船舶等领域,提高了喷漆效率。虽然喷涂机器人智能化水平有所提高,能取代大部分人工喷漆,但目前智能化喷涂还是采用人工示教的方法进行喷涂时的路径规划,这样不仅影响工作人员的安全,还影响喷涂质量。所以急需研究自动喷涂技术,即通过离线编程规划路径后让机器人自己路径规划从而进行自动喷涂。因此,本文针
火车作为我国交通工具的重要组成部分,在我国运输行业中扮演着重要的角色。随着火车车辆的运行,其车厢表面的油漆标记会逐渐磨损或者破坏。当前,火车车厢标记的喷涂作业是通过人工喷涂方式来完成。但人工喷涂方式存在喷涂效率低、涂料浪费以及危害作业人员健康等缺点。因此,本文研究了一种自动喷码机器人,实现了火车车厢标记的自动喷码,从而有效的提高喷涂效率,降低涂料浪费,保障作业人员的健康等。本文主要从以下方面进行研