基于抽象语法树的重复代码检测

来源 :上海师范大学 | 被引量 : 0次 | 上传用户:luohuaxiyushi
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
重构技术在软件开发和维护的过程中所起的作用日益受到人们的重视,作为减少软件中Code Smell的有效途径,重构逐渐成为软件工程研究的一个热门领域。通过重构,可以减少软件中的缺陷,优化软件的内部结构,从而提升软件的质量,延长其寿命周期。但是,由于实施重构的第一步工作,即Code Smell的判定还需手动进行,重构技术的发展和应用也因此受到制约。本文选定重复代码这一最为常见的Code Smell作为研究对象,在国内外现有重复代码检测技术研究的基础上,提出了基于抽象语法树的重复代码的检测方法:借助于开源工程CSParser,在其基础上利用简化后的Micro CSParser和自定义抽象语法树文法,从每一个处于编辑状态的源文件中提取对应的抽象语法树,将程序代码所包含的语义解析至抽象语法树的各个节点中;在生成抽象语法树的过程中,消除了分析语法树中有助于编译的细节信息,去除了冗余结点,从而便于抽象语法树中关键信息节点的提取;通过对所提取的抽象语法树进行方法级遍历,将每一个函数所对应的抽象语法树的节点信息以字符串的形式存储在Hashtable中。接下来利用Sim Hash算法通过分词、哈希、加权、合并和降维处理,得到各函数抽象语法树信息串的数字签名,进一步比较这些数字签名之间的汉明距离,完成重复代码的检测。最后,在上述理论研究的基础之上,本文设计并实现了一个基于抽象语法树的简易重复代码检测工具,并对其进行了简单的测试。虽然该工具功能单一,且对重复代码的检测存在一定的局限性,但其实现过程不失为对代码坏味自动检测课题的一次积极探索。通过功能的优化和更多种类代码坏味检测功能的实现,一定能为重构技术的应用提供更多帮助。
其他文献
SIFT特征匹配算法通过侦测与描述影像中的局部特征,所提取的特征点描述子对图像的旋转和尺度变换具有不变性,因此在图像处理领域应用广泛,但该算法也存在一些缺点。首先,SIFT
数学计算是新时代科学技术进步的重要标志之一。特别是随着计算机的问世,利用计算机进行高效地数学计算,在各个领域有着举足轻重的地位。 从数学计算分类来讲,一般分为符号计
知识发现和数据挖掘是人工智能、机器学习、数据库和统计理论等相结合而形成的新的研究与应用领域,序列模式发现是数据挖掘的一个重要分支,具有广阔的应用前景。随着信息技术日
近些年云计算技术的应用越来越广泛。由于云计算技术在互联网行业中的快速发展,数据的大小和复杂程度(大数据)急剧增加,促使Map Reduce和分布式文件系统,如HDFS(Hadoop分布式
近年来,随着嵌入式系统技术与产业发展,嵌入式平台已经被广泛运用到各个领域,嵌入式系统联网并接入互联网成为必然,因而也带来网络安全问题,必需提供有效解决方法。而在现在所有的
本文研究了IMS域彩铃彩像平台SIP通信监控系统的实现方法。IMS域通信网络是包括通信网在内的多种网络融合发展的趋势。随着通信网络的进步,越来越多新的通信业务不断出现,为这
UML 是一种定义良好、面向对象、具有丰富表达能力的、成熟的图形化建模语言。它不仅仅支持面向对象的分析和设计,更重要的是支持从需求分析开始的软件开发全过程。 在软件
搜索引擎的搜索结果包含了大量网页,用户如何从中快速获取所需信息是十分重要的问题。因此,研究人员提出对搜索结果进行网页自动分类,使结果按内容类别呈现给用户,提高用户查询效
随着无线通信技术的飞速发展,移动Ad-Hoc网络得到了广泛的应用和研究。与传统的无线通信技术相比,移动Ad-Hoc网络技术不依赖基础设施且能够快速和灵活配置,能适用于要求高抗毁性
混沌现象是二十世纪最重要的科学发现和学术研究热点之一,混沌在保密通信中具有重大应用价值和潜力,本文采用理论推导和数值仿真相结合的方法研究了混沌保密通信中的混沌同步和