基于图像相似度检测代码克隆

来源 :内蒙古师范大学 | 被引量 : 0次 | 上传用户:hulaxiazai
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
代码克隆(clone code)是指软件代码库中存在的两个或两个以上完全相同或彼此之间结构不同但功能相同的源代码片段。在开发软件与维护系统的过程中,开发人员经常使用“复制-粘贴”或者使用开发框架的开发方式,使得软件系统中频繁出现代码克隆的情况。代码克隆不仅能够减小重新编写代码所产生的潜在风险,还可以缩短软件开发所需的时间,具有一定的积极影响。但是有研究表明,大量的代码克隆会对软件系统产生消极的影响,例如重复使用包含未知bugs的代码片段,可能会造成软件缺陷传播的现象,从而使系统的稳定性降低。此外,若没有对系统中存在的代码克隆进行良好的管理,代码库会不断扩大,从而造成代码库冗余,增加了维护成本。因此,检测、识别并呈现软件系统中所存在的代码克隆是代码克隆领域中的一个重要研究内容。研究者们为了消除代码克隆,降低其所带来的负面效应,主要从文本、Token、树、度量值以及图五种表征方式展开研究,然而长期以来代码克隆检测效果并未取得新的进展。为此,本研究从图像处理角度提出了一种新型的代码克隆检测方法(Clone Code Detection Based on Image Similarity,CCIS),帮助开发者识别并更好地理解代码克隆所包含的有价值信息。主要工作包括:(1)对需要进行代码克隆检测的源代码进行预处理,主要包括移除源代码中与克隆检测内容不相关的信息,如空白符、单行注释以及多行注释等,规范代码格式,以函数为粒度对源代码进行识别并提取,为了更准确的检测代码克隆,本研究所提取的函数包括循环嵌套深度,为代码克隆检测提供基础研究。(2)在已获取函数为粒度的代码片段基础上,根据关键字、数据类型、函数名称、标识符以及数字或字符串等内容在代码中所占权重的不同,为代码片段内容添加高亮,并将其转换为PNG(便携式网络图形)形式的图像。采用8位灰度图的方式表示转换后的代码图像,并将图像以大小为m*n的二维矩阵方式读入存储器,从而减轻后期相似度检测的计算量。(3)对上述的代码图像进行取负值和调整图像尺寸大小的操作,使得图像之间的像素与比例相同,从而满足后续图像相似度检测的条件。除了调整图像的尺寸,还需要使用图像模糊滤波器对代码图像的内容进行规范化操作。(4)基于已规范化处理的代码图像,使用Jaccard距离与感知哈希算法进行相似度检测,将检测结果存储到XML文件中,并将得到代码克隆信息可视化。为了验证实验的有效性,使用6款开源软件构建评价数据集进行测试,实验结果显示,基于图像相似度检测代码克隆与可视化方法能够检测出100%的类型一代码克隆,88%的类型二代码克隆与60%的类型三代码克隆,证明了本研究方法对代码克隆检测可行有效。
其他文献
当前,随着世界金融市场的自由化、国际化和一体化进程的加快,以及新技术革命特别是现代计算机和信息技术在银行领域的广泛应用,金融创新日新月异,已成为推动全球金融业发展的
随着国有商业银行改革步伐加快和外资银行的不断进入.大中城市的金融服务水平有了明显提升,相对而青.县域金融服务却存在不少问题.难以适应经济发展需求。笔者就此提出几点改进基
如何测度、评价商业银行的金融风险程度,并依据风险程度采取相应的监管举措是当前迫切需要解决的一个重要问题.本课题在参考国外对商业银行评价体系的基础上,建立了一套风险
<正>建筑业发展目前仍处于重要战略机遇期,需要准确把握市场供需结构的重大变化,增强改革意识、创新意识,不断适应新技术、新需求的建设能力调整及服务模式创新任务的需要,切
近年来,由于金融体制改革等多种因素的影响,金融对县域经济的支持逐步弱化,引起地方党政的强烈关注,也制约了县域金融业自身的发展.农村经济发展关系到国家发展与稳定的根本,
近年来,我国证券市场屡次发生财务造假事件,中国又是一个农业大国,农业上市公司作为我国A股上市公司的重要组成部分,更是屡屡曝出财务造假的丑闻。分析其原因,不外乎农业上市
县域经济金融结构的双重调整,使企业融资特点发生变化,内源性融资成为县域企业资金融通的主要特点,信贷资金在企业融资中比例下降,本文剖析了县域企业融资特点变化的原因,并
<正>重庆工商大学政治与社会发展学院是重庆市最早开办“社会工作”和“劳动与社会保障”本科专业教育的院系,也是目前川渝两地本科院校中惟一的中国社会工作教育协会理事单
青春女孩走路、站立、坐下都应该挺胸抬头,精神抖擞,显示出青春活力。但有些少女却是窝胸、低头、腰直不起来,背部圆凸,形成了驼背。驼背不但影响体形的挺拔健美,而且由于脊
期刊
近年来.随着我国金融法制化进程的不断推进.人民银行依法行政的能力和水平明显提高.但在协助司法机关的过程中还存在着一些问题,制约了人民银行职责的履行。需要认真加以研究解决