文章连接:

http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6494937

写在前面的话

代码克隆检测的方法有很多,比如说 textual-based, token-based, tree-based, graph-based, metric-based,hybird based
使用的标准不同,代码克隆的检测分类也是不同的。(taxonomy)

Boreas: An Accurate and Scalable Token-Based Approach to Code Clone Detection

今天我们要翻译的是这一篇

这篇用的检测方法是 基于 token 的

它引入了一个概念叫做counting Environment(CE) 来描述每一个变量

每一个变量可以表示成为一个 Count Vector(CV) 计数向量

我们把所有的CV合并在一起我们就可以构建出一个 Count Matrix(CM)

我们构建出一个CE的标准如下

这样我们可以构建出一个10维的向量

它的向量的每一位表示如下:

  1. 变量被使用的次数
  2. 变量被定义的次数
  3. 变量是不是在一个if 条件里面
  4. 变量是不是在一个加法或者减法运算
  5. 变量是不是在一个乘法或者除法运算中
  6. 变量是不是一个数组的下标
  7. 变量是不是定义为一个常量
  8. 变量是不是在第一层循环

  9. 变量是不是在第二层循环

  10. 变量是不是在第三层循环

看下面这个图应该很清楚了

  • 第一步是删除字符串,字符
  • 第二部就是提取我们的 token
  • 第三部就是 构建我们的 CM
  • 计算我们的 keyword 和 symbol 的计数向量
  • 为每一个的token 向量计算相似值,计算出CM之间的相似值之后得出聚类的结果

Boreas: 一种基于token 的精确并且大规模检测代码克隆的方法相关推荐

  1. 一种基于DirectX 9.0 API的G代码逆向渲染方法

    G代码是一种工业加工描述语言,现在也广泛的运用于3D打印中.但G代码是一种单向的描述语言,很难逆向回三维模型.但近日,日本出现了一款名为MakePaintable的软件,它可以将G代码逆向回三维模型. ...

  2. matlab鬼成像,一种基于光计算的可视化计算鬼成像系统及成像方法与流程

    本发明涉及成像探测领域,具体为一种基于光计算的可视化计算鬼成像系统及成像方法. 背景技术: 光学鬼成像技术是通过双路光信号符合探测恢复待测物体空间信息实现的.其特点是包含物体信息的信号光(signal ...

  3. 云计算 码率适配限速_一种基于云计算的应用于用户终端的测速方法

    一种基于云计算的应用于用户终端的测速方法 [专利摘要]本发明提供一种基于云计算的应用于用户终端的测速方法,包括:建立测速机制,定义相关参数,测速方法,输出测速结果:具体包括:建立测速机制,定义相关参数 ...

  4. 肺结节目标检测_一种基于CT图像的肺结节检测方法及系统与流程

    本发明属于医学图像分析和计算机辅助诊断等技术领域,更具体地,涉及一种基于CT图像的肺结节检测方法及系统. 背景技术: 肺癌是导致患癌死亡的最危险的疾病之一,其发病率占所有癌症的三分之二,且5年存活率为 ...

  5. matlab 电缆,一种基于Matlab的电缆绝缘自动化监测系统及使用方法与流程

    本发明属于电缆绝缘测量技术领域,尤其是涉及一种基于Matlab的电缆绝缘自动化监测系统及使用方法. 背景技术: 电力系统当中,高压电缆担负着传输配送电能的任务,高压电缆运行的可靠性和安全性将直接决定着 ...

  6. flash写保护原理_一种基于flash写保护的防止flash被意外篡改的方法与流程

    本发明属linux嵌入式芯片安全技术领域于领域,尤其是涉及一种nandflash写保护应用方法. 背景技术: 目前很多公司都纷纷尝试智能设备(sd,smartdevice)领域,sd设备功能越来越多, ...

  7. 聚类dbi指数_一种基于DBI-PD聚类算法的异常检测机制

    一种基于 DBI-PD 聚类算法的异常检测机制 丁姝郁 [期刊名称] <电脑开发与应用> [年 ( 卷 ), 期] 2015(000)002 [摘要] 分析了网络数据维数和检测准确度之间的 ...

  8. python小波分析法检测火焰_一种基于小波分析的网络流量异常检测方法

    一种基于小波分析的网络流量异常检测方法 杜臻 ; 马立鹏 ; 孙国梓 [期刊名称] <计算机科学> [年 ( 卷 ), 期] 2019(046)008 [摘要] 对大量网络流量数据进行高质 ...

  9. linux 认证 转发,一种基于Linux系统实现路由器的portal认证报文转发方法和装置

    主权项: 1.一种基于Linux系统实现路由器的portal认证报文转发方法,其特征在于,在Linux系统上创建虚拟网卡,为虚拟网卡配置环回口IP地址,配置portal进程监听环回口的TCP协议预设端 ...

最新文章

  1. Centos 修改时间地区及NTP同步北京时间
  2. 万字长文总结机器学习的模型评估与调参
  3. CSRF(Cross-site request forgery)跨站请求伪造
  4. Vue源码探究-全局API
  5. exec 执行结果_php执行系统外部命令的4种方法
  6. 用户权限sudo、suid、sgid以及facl等
  7. android+模拟器上gdb,使用gdb在Android Emulator中进行调试c程序
  8. python基础学习笔记(九)
  9. python 拼音 四线格_拼音四线三格中的写法示意及书写注意事项
  10. Dell Optiplex主流台式机驱动安装指南
  11. java程序设计颜志军_毕业论文(设计)大学生竞赛管理系统的设计与实现.doc
  12. linux系统维护诸多定时器,linux定时器总结
  13. 香港云服务器选阿里云好还是腾讯云好?
  14. 采用系统API实现的二维码扫描、识别和生成
  15. Linux 命令(244)—— reset 命令
  16. 【读书摘录】《沉默的大多数》(王小波)
  17. c语言 统计已初始化的二维数组a[3][4]中非零元素的个数(用指针实现)
  18. 卸载Autodesk系列之后电脑屏幕灰白怎么解决
  19. 有哪些你一打开,就令你惊讶的网站?
  20. PS练习3——渐变色

热门文章

  1. 滴滴CEO程维:当初把产品拿给美团王兴看,他说了两个字“垃圾”!
  2. 如何从零设计一款高并发架构(建议收藏)
  3. DDD领域驱动设计 — 贫血模型与充血模型
  4. 别在 Java 代码里乱打日志了,这才是打印日志的正确姿势!
  5. 阿里程序员跳槽到小外企,再无996!业余时间开发APP,每月广告收入8万多!堪比阿里P8!...
  6. 遇到网络问题你是怎么解决的?安琪拉有二招
  7. 基于深度学习的目标检测技术的演进:从R-CNN到Faster R-CNN
  8. 架构的能力是不断打磨1.0,2.0成就3.0,4.0
  9. 拆解交易系统--性能优化,安全加固与弹性扩缩容
  10. Windows~KinectV2开发