【代码相似论文笔记】基于序列聚类的相似代码检测算法

摘要:

为了提高源程序代码之间相似性的检测效率,提出一种基于序列聚类的相似代码检测算法. 算法首先把源代码按照其自身的结构进行分段提取,然后对各个分段进行部分代码变换,再以带权重的编辑距离为相似度量标准对这些符号进行序列聚类,得到相似的程序代码片段,以达到对源程序进行相似功能检测的目的.

应用:

可以通过检测源程序中的相似代码对源程序进行简化,也可以查找出多个程序之间的相似功能,还能用于抄袭检测.

步骤:

1.提取出源代码中的功能段

2.以带权重的编辑距离为相似度量标准

3.通过聚类源程序代码序列的方法,查找出源程序中相似的代码功能段,以达到检测相似功能程序的目的.

1.问题定义:

大小

字符数

两条序列S1和S2之间的编辑距离将 S1经过插入、删除、替代等操作变换成 S2所需要的最少操作次数.

签名

eg。

签名距离

1.1 带权重的编辑距离

本文对序列中各种不同类型的字符赋予不同的权重,根据字符的可替代性大小规定各个字符的权重. 如果是代表关键字的字符,所得到的权重就大一些,代表变量的字符得到的权重就比较小,因为相比之下,变量的可替代性要比关键字的可替代性大.

要对程序代码段进行聚类分析,首先要解决的问题就是怎样定义程序代码段之间的距离度量,以及怎样确定这 2 段代码是相似的. 本文定义一种
权重的编辑距离( weight edit distance,WED)
来衡量2 个序列之间的距离,度量它们的相似性.

eg:

假如一个符号序列 S1= asdfght,另一个符号序列 S2= abcfght. 可以看出这 2 个序列中只有2 个符号不同,设定其中的 b、c、d 都为关键字类型的符号,而 s 为操作符类型的权重。

POS:1  2  3  4  5  6  7

序列S1:a  s  d  f  g  h  t

序列S2:a  b  c  f  g  h  t

2个序列 S1和S2间的权重编辑距离为  =3+2=5

1.2 序列间的相似度

2个序列 S1和S2之间的相似度

=1-5/(7+7)=9/14

Smin被称为序列间的最小相似度阈值

为了方便计算,根据Smin得出Dmax.

性质一:

签名距离反映了序列字母组成上的差异

权重编辑距离反映了 S1和 S2之间插入、删除、替换操作不同权重的差异

由于计算签名距离的时间复杂度 O( m + n) 远小于计算权重编辑距离的时间复杂度 O( mn) . 因此,根据性质 1,在判断序列是否相似时,可以首先
通过计算序列间的签名距离来进行初始过滤,再通过计算权重编辑距离来进行最后的判断.

2    基于带权重编辑距离的相似序列聚类算法

2.1   源程序代码的分段提取

检测源程序的相似代码,首先需要对源程序代码进行分段,提取出函数功能段. 在对源程序代码进行分段时,采用一种多级分段方法,把源代码分为不同标准下的多种分段,分段的标准有类、函数、语句,然后再对同一个级别下的各个分段代码进行处理.在查找相似代码时,由于函数功能段是整个源程序代码的主体,因此只需要使用第二级函数分段即可,对函数、语句和类的处理意义不大.

2.2    程序代码的部分转换

把关键字类型的代码转换成一个个数字,再计算权重编辑距离。

2. 3    符号序列的聚类

判 断 序 列 与 序 列 是 否 相 似

判断序列与簇是否相似

符号序列的聚类

3    实验与分析

由于在源程序中功能函数所占的比例很大,而且对于程序的功能取决定性作用,因此如果功能函数相似,那么基本上可以确定其所在的源程序也是相似的.从表 4 中可以看出,算法能够正确判断代码的相似性.

总结:

本文第一部分提出了两个概念:

1.带权重的编辑距离和签名距离

2.基于带权重的编辑距离和签名距离,来判断序列间的相似度,设定了一个阈值Smin,当超过Smin,则认为两个序列是相似的

第二部分讲诉了 基于带权重编辑距离的相似序列聚类算法:

1.源程序代码的分段提取(分段的标准有类、函数、语句,主要是函数类,因为函数功能段是整个源程序的主体)

2.分段后,对每一段中的关键字转换为数字,便于提取和处理

3.符号序列进行聚类:

a.判断序列与序列是否相似(根据前面距离)

b. 判断序列与簇是否相似(一个簇包含多个序列,把簇中的所有序列依次与该序列进行相似性判断,如果簇中有任意一个序列与该序列相似,就判定为该序列与该簇相似)

c.符号序列的聚类:

本文采用改进的基于密度的聚类算法对序列聚类,首先创建一个簇列表来存放聚类结果簇,对于存放在 map 中任意一个序列 Si,判断序列 Si与簇列表中的簇的相似关系,直到所有的序列 Si都被处理.此时的相似关系可能为 3 种情况: 1) 如果簇列表中没有簇与序列 Si相似,那么就新建一个簇存放该序列,并且把新创建的簇添加到簇列表中; 2) 如果簇列表中有一个簇与该序列相似,就把它加入到这个簇中,更新簇的特征值; 3) 如果簇列表中有多个簇与该序列相似,就把这几个簇合成一个新簇,再把序列 Si加入到新簇中,并且在簇列表中移除合并了的那几 个 簇,添 加 新 创 建 的 簇.

这篇论文仅仅只是提出了如何找出代码段中的相似代码。

时间: 2024-11-02 15:39:38

【代码相似论文笔记】基于序列聚类的相似代码检测算法的相关文章

[转载]基于模糊Choquet积分的目标检测算法

前言: 原文地址为:http://www.cnblogs.com/pangblog/p/3303956.html 正文: 本文根据论文:Fuzzy Integral for Moving Object Detection-FUZZ-IEEE_2008的内容及自己的理解而成,如果想了解更多细节,请参考原文.在背景建模中,我们对于像素的分类总是采用非此即彼的方式来分,即该像素要么是背景要么是前景.然而,由于噪声.光照变化以及阴影等特殊情况导致像素会存在错误,即像素存在一定的不确定性.为了处理这种不确

车道线检测文献解读系列(一) 基于机器视觉的高速车道标志线检测算法的研究_李晗

作者背景 基于机器视觉的高速车道标志线检测算法的研究_李晗 东北大学车辆工程硕士学位论文 2006年 [GB/T 7714]李晗. 基于机器视觉的高速车道标志线检测算法的研究[D]. 东北大学, 2006. DOI:10.7666/d.y852642.` 论文结构一览 预处理 灰度化 [亮点]模式判别 选择日间模式还是夜间模式: 在每个检测周期开始时,首先判断采用日间模式还是夜间模式工作.摄像机视野中的上半部分为天空背景,天空亮度可以显著区分日间和夜间环境.由于天空的颜色为蓝离,日间天空的蓝色分

Staple: Complementary Learners for Real-Time Tracking 论文笔记

Staple: Complementary Learners for Real-Time Tracking 论文笔记  相关滤波相关的跟踪算法,最近非常的流行,对运动模糊和光照变换有一定的鲁棒性.但是,由于像模型展示的那样,他们的跟踪结果严重的依赖于跟踪物体的空间布局,对形变非常的敏感(deformation).基于颜色统计的模型有互补的性能:他们对物体的外形有较好的处理能力,但是,对出现的光照变量却无法很好的应对.此外,仅仅依赖于颜色统计,没有那么好的判别性.本文提出一种简单的跟踪算法,结合互

阅读《基于谱聚类的终端区飞行轨迹分析》笔记

一. 前言 由于参与的相关可视化项目进展到飞行轨迹的聚类算法部分,于是阅读了部分相关论文,并做了一些摘要. 论文均来源与中国知网,均将申明出处. 二. 论文出处 <基于谱聚类的终端区飞行轨迹分析> 马 勇,胡明华,顾 欣,袁立罡 ( 南京航空航天大学民航学院,江苏 南京 210016) 航空计算技术,第45卷,第5期,2015年9月 三. 论文笔记 1.摘要:为了实现智能化处理海量航班数据,精细描述终端区运行特性,研究了基于谱聚类的终端区飞行轨迹分析方法.在分析终端区航班飞行特点的基础上,提出

Deep Learning论文笔记之(二)Sparse Filtering稀疏滤波

Deep Learning论文笔记之(二)Sparse Filtering稀疏滤波          自己平时看了一些论文,但老感觉看完过后就会慢慢的淡忘,某一天重新拾起来的时候又好像没有看过一样.所以想习惯地把一些感觉有用的论文中的知识点总结整理一下,一方面在整理过程中,自己的理解也会更深,另一方面也方便未来自己的勘察.更好的还可以放到博客上面与大家交流.因为基础有限,所以对论文的一些理解可能不太正确,还望大家不吝指正交流,谢谢. 本文的论文来自: Sparse filtering, J. N

DL4NLP —— 看图说话(Image Caption)任务的论文笔记(一)评价指标和NIC模型

看图说话(Image Caption)任务是结合CV和NLP两个领域的一种比较综合的任务,Image Caption模型的输入是一幅图像,输出是对该幅图像进行描述的一段文字.应用场景:比如说用户在拍了一张照片后,利用Image Caption技术可以为其匹配合适的文字,方便以后检索或省去用户手动配字:此外它还可以帮助视觉障碍者去理解图像内容.类似的任务还有Video Caption,输入是一段视频,输出是对视频的描述. (一)任务描述 目前来说,Image Caption任务主要集中在英文上,数

论文笔记:目标追踪-CVPR2014-Adaptive Color Attributes for Real-time Visual Tracking

基于自适应颜色属性的目标追踪 Adaptive Color Attributes for Real-Time Visual Tracking 基于自适应颜色属性的实时视觉追踪 3月讲的第一篇论文,个人理解,存在非常多问题,欢迎交流! 这是CVPR2014年的文章. 名字翻译为基于自适应选择颜色属性的实时视觉跟踪.首先理解什么是Adaptive color attributes,文章中colorattributes把颜色分为11类,就是将RGB三种颜色细化为黑.蓝.棕.灰.绿.橙.粉.紫.红.白和

【论文笔记】Recursive Recurrent Nets with Attention Modeling for OCR in the Wild

写在前面: 我看的paper大多为Computer Vision.Deep Learning相关的paper,现在基本也处于入门阶段,一些理解可能不太正确.说到底,小女子才疏学浅,如果有错误及理解不透彻的地方,欢迎各位大神批评指正! E-mail:[email protected]. <Recursive Recurrent Nets with Attention Modeling for OCR in the Wild>已经被CVPR 2016(CV领域三大顶会之一)正式接收了,主要是介绍了

论文笔记(1)——《Where&#39;s Wally?Precise User Discovery Attacks in Location Proximity Services》

Abstract: 位置相近服务在社交和移动网络的广泛使用是基于可用性和用户隐私的平衡,但引发了三角定位攻击的风险.文章系统化地讨论了此类攻击的防范,包括问题在不同临近模型下的形式化,针对不同模型的有效攻击,以及攻击需要的询问次数的确界,并针对实际应用进行实验. 一)对攻击的建模:UDP,已知包含点p的欧氏平面区域A以及一个提供邻域信息的黑箱,找到点p的位置 邻域(proximity oracle)定义:,以某点为圆心的区域 原问题化为两部分: 1)Disk Coverage:将A用最少的r-邻