基于抽象语法树和改进粒子群算法的代码同源性分析

来源 :东南大学 | 被引量 : 6次 | 上传用户:pan07631014
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着计算机和互联网的发展,社会对软件开发人员的需求量逐年增加,但庞大的代码量使得人工审核代码变得不可能,同时便捷的互联网使得代码抄袭情况越来越严重,而源代码的同源性分析能比较两个软件从源代码到软件功能之间的差别,找出它们之间的相似之处或相同之处,从而有效分辨代码抄袭情况,因此源代码的同源性分析对于代码的知识产权保护显得特别重要。常见的同源性分析主要有三种:基于文本的同源性分析、基于令牌(token)的同源性分析以及基于语法树的同源性分析。其中基于语法树的同源性分析被广泛采用。本文提出一种基于抽象语法树和改进粒子群算法的代码同源性分析方法。该方法先对程序代码进行预处理得到中间代码,然后进行词法语法分析并利用抽象语法树存储语法结构信息,最后利用改进后的粒子群算法进行迭代优化。具体做了以下几个方面的工作。一、基于ANTLRV4工具,研究了 ANTLRV4构造词法分析器和语法分析器的过程。词法分析主要读入源代码,把构成源程序的字符流进行识别并转化成记号流作为语法分析的输入。语法分析主要接受来自词法分析器输出的记号流并将其转化为抽象语法树。二、针对C++语言特性,进行了表达式抽象语法树结构的描述以及语句的抽象语法树结构的描述。为了避免语法分析时匹配失败提出了增加虚拟节点的改进思路,利用ANTLR自带的Listener监听器进行语法树的遍历以及遍历完将其写入文件进行存储,从而为粒子群算法的应用提供了数据来源。三、针对基本粒子群算法容易陷入局部最优的缺点提出了三点改进思路,即粒子编码方式的改进、通过变异策略增加粒子的多样性以及收敛因子的优化。四、建立和分析了反抄袭检测系统的开发环境和开发平台,该系统主要是由输入模块、预处理模块、AST分析模块、相似度计算模块和输出模块构成。输入模块主要实现源文件和对比文件的输入;预处理模块的主要功能是删除程序代码中不影响程序代码生成AST的部分;AST分析结果模块是将所有树节点信息,包括哈希值,节点类型,节点名称,节点信息量输出出来;相似度计算模块是将每次迭代中得到的哈希值,节点类型和节点信息量的相似度值展示,输出模块是将最后得到的相似度值进行展示。五、基于JAVA和springMVC设计了代码的同源性分析的实验过程。实验证明,利用改进后的粒子群算法可以提高识别源代码抄袭的准确率和效率。
其他文献
近些年网络媒体、广告、自媒体等各方面的宣传为健身休闲产业营造了良好的氛围,我国健身休闲市场发展迅速,作为体育产业的一大重要支柱,健身休闲行业的营销策略及经营效益将
核电作为一种清洁能源,在全世界范围内被广泛应用,核安全重视程度也在日渐提高。定期进行民用核安全设备的无损检验,是一种有效确保核设备安全的措施,其中超声检测是应用较多的体积检验方法之一。超声检测在核电元器件的设计、生产制造、运行阶段均有实施。本文以核电站主蒸汽管道和主给水管道在核岛墙体内的贯穿件连接焊缝为研究对象,开发一套基于超声检测技术的无损检测系统,主要研究以下内容。首先,本文概述了世界范围内核
在疫情时期,为了继续进行教学,教师与学生进行合作,共同开展了线上教学活动。通过一段时间的线上教学,让越来越多的教师开始对线上教学加深了了解,教师开始逐步地发现了线上
近年来理论界对诚信的研究,可以概括为以下几个主题:诚信诉求;诚信功能及价值;诚信培育.培育诚信的举措应着眼于:诉求应关注诚信人性研究;克服诚信的孤立作用状态;致力诚信泛
针对生物安全实验室生物废弃物管理和处理的问题,从废物管理、废物分离、废物容器、废物收集、废物存储、处理方法的选择、处置方式、废物处理方法的试验和验证、风险管理等9
高校教师拥有丰富的隐性知识,高校的知识管理必须在有效整合显性知识的同时,对隐性知识也要给予充分关照。高校教师隐性知识管理的核心有两个:一是将隐性知识显性化;二是与他人共