- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用哈希值和标识符冲突率克隆代码检测误检消除方法
使用哈希值和标识符冲突率克隆代码检测误检消除方法
摘要:针对采用基于token的克隆代码检测方法检测语法相似的克隆代码时存在的部分误检问题,提出一种使用哈希值和标识符冲突率来消除克隆代码检测的部分误检的方法。该方法首先通过语句的哈希值判断语句结构的相似性,然后计算标识符冲突率,通过冲突率的变化,来确定误检消除的方向和消除情况。对于存在误检的克隆代码,最终通过修改克隆代码的相对行号来消除误检。实验结果表明,提出的方法可以消除由于插入结构相同的语句而引起的克隆代码的误检问题,并在此基础上,有效消除了语句形式一样但由于语句顺序颠倒而引起的克隆代码误检问题,提高了克隆代码检测及克隆代码相关缺陷检测的准确性,有利于后续克隆代码重构的研究。
关键词:克隆代码; 哈希值; 标识符冲突率; 误检; 重构
中图分类号:TP311 文献标识码:A 文章???号:2095-2163(2013)05-0046-04
0引言
克隆代码(Cloned Code),又称作重复代码(Duplicated Code),是指源代码文件中多个相同或相似的代码片段[1]。
克隆代码在大多数情况下是有害无益的,因其增加了软件系统代码的长度,使得软件系统愈加复杂、难以维护,同时系统运行效率也会降低,并且给软件引入大量的程序缺陷。
近年来,代码克隆的研究已成为软件工程领域的前沿课题。各国的软件研究人员竞相提出了多种检测克隆代码的方法,并陆续开发了多款自动检测大规模软件系统中克隆代码的工具[2]。国际上研究克隆代码检测的国家主要有日本、美国、英国等。国内研究克隆代码检测的科研院所主要有南京大学[3]、大连理工大学[4]和汕头大学[5]等。ZhenminLi和Shan Lu 等人在文献[6]中将数据挖掘与克隆代码检测结合,开发了克隆代码检测工具CP-Miner。另外,高效的序列模式挖掘算法既可显著提升检测速度,降低时间复杂性,也可以容忍经过增、删、改和变量重命名的克隆代码片段,并且对“拷贝-粘贴-修改”行为所导致的变量重命名不一致的软件缺陷也能即时进行检测。
但是,通过分析实际的程序却发现该方法存在一些误检问题。首先,如图1中程序所示(图中++用于标记克隆的语句)。其中可以看出,(a)和(b)中的第5行克隆语句的映射发生了错误((a)中的第5行语句应该映射到(b)中第5行语句的下一行语句)。其次,如图2中程序所示。从中可以看出,由于语句顺序颠倒,图2(a)和(b)中的语句3和4的映射发生了错误。克隆代码片段的映射错误,不仅会导致后续对克隆代码相关缺陷检测的误检,如图3所示(由图1中的克隆代码检测的误检引起),而且会导致错误的语句相似度分析,从而影响克隆代码重构的准确性。
为解决上述问题,本文提出了使用语句哈希值和标识符冲突率来消除克隆代码部分误检的方法。该方法不仅可以处理由于插入相同语法结构的语句而导致的克隆代码的误检问题,而且还可以消除语句形式一样但由于语句顺序颠倒而引起的克隆代码误检问题。通过分析实际的程序代码证明本文方法可以增强克隆代码检测能力及提高克隆代码相关缺陷检测的准确性。
1.1基于频繁子序列挖掘克隆代码检测模型
基于频繁子序列挖掘克隆代码检测模型[3]可将程序代码转化为token串,再将token串转化为数字序列(每一行语句映射成一个数字),相同结构的语句则映射成相同的数字,如图1所示,生成数字序列数据库。引入数据挖掘算法中频繁子序列挖掘技术,将重复代码检测转化为序列挖掘问题,解决了以往算法时间复杂度过高,且不能识别经过修改的拷贝-粘贴代码的缺点。
1.2克隆代码相关软件缺陷检测模型
克隆代码检测的目的是为了解决与克隆代码相关的问题。基于序列挖掘的C克隆代码及相关软件缺陷检测模型在克隆代码检测后,根据其生成的克隆代码集合以及克隆代码相关源程序信息,进行了克隆代码相关缺陷的检测。
1.3标识符冲突率
为了识别标识符不一致的情况,通过计算克隆代码对的标识符冲突率来判断标识符不一致的发生位置。每个标识符的映射冲突率的计算公式如式(1)所示
该模型基本思路如下:首先对C源代码进行克隆代码检测,然后计算克隆代码对中每个标识符的冲突率。对于具有冲突的标识符,在上面两步的基础上,根据冲突发生的代码行位置,判断当前语句行的下一条语句与当前语句行的哈希值是否相等,如果相等,则将对应位置标识符作为当前匹配的标识符,计算标识符冲突率。如果新的标识符冲突率为零,说明发生了误检,则根据记录的语句行号调整克隆代码标记的相对行号。如果新的标识符冲突率不为零,则继续对当前行的上一条语句计算标识符冲突率。如果当[JP3]前语句行的下一条及上一条语句均已完成了标识符冲突率的计算,结果仍不为零,则表明
您可能关注的文档
最近下载
- 吉林省中药软片炮制规范.pptx VIP
- 名著阅读《湘行散记》七年级语文上册部编版(共9页).docx VIP
- 《白洋淀纪事》阅读测试题含答案(推荐).docx VIP
- 必考名著《白洋淀纪事》导读+知识点汇总.pdf VIP
- CQJZDE-2008 重庆市建筑工程计价定额.docx VIP
- 人教部编版七年级语文上册名著选读《湘行散记》导读.doc VIP
- 重庆市建筑工程计价定额CQJZDE-2008.doc
- 部编版七上语文名著导读《朝花夕拾》、《白洋淀纪事》、《湘行散记》知识点练习(含答案).docx VIP
- 超星尔雅学习通《大学生劳动教育》章节测试含答案.docx VIP
- 七年级上册名著《湘行散记》知识点+习题(共12页).docx VIP
文档评论(0)