精华内容
下载资源
问答
  • 基于深度学习的代码克隆检测技术研究.pdf
  • 代码克隆可分为四种类型,它们的检测难度越来越高,从纯文本(类型1)到纯语义(类型4)不等。 文献中报道的大多数克隆检测器在Type-3下都可以很好地工作,这说明了语法上的差异。 然而,在Type-3和Type-4之间,...
  • dupl dupl是用Go语言编写的用于查找代码克隆的工具。 到目前为止,它只能在Go源文件中找到克隆。 该方法将后缀树用于序列化的AST。 它忽略AST节点的值。 它只是与它们的类型一起使用dupl dupl是用Go语言编写的用于...
  • QQ空间代码克隆工具ASP极速版 可以快速查询任意QQ空间里面的模块 输入QQ号即可查询 程序使用ASP代码无数据库,应重多网友的要求特发出此代码,适合新手学习 程序为简单版本,一般无权限限制空间可复制。复制的...
  • 一种基于特征矩阵的软件脆弱性代码克隆检测方法?
  • 本文提出了一种基于树和基于令牌的方法相结合的高速,高精度代码克隆检测方法。 重复的程序代码(称为代码克隆)的存在是降低软件质量和可维护性的主要因素之一。 如果一个代码片段包含错误(错误),并且将它们复制...
  • ReSharper 的代码克隆检测和修复插件。 拉尔夫探员是什么? Agent Ralph 主要是 C# 的代码克隆检测和修复工具,作为插件提供。 它还具有一些其他与代码克隆无关的零碎功能,但它们本身就是有用的 ReSharper 扩展。 ...
  • SourcererCC是基于令牌的代码克隆检测器,用于超大型代码库和Internet规模的项目存储库。 SourcererCC可以在许多粒度级别上工作,例如以任何语言检测文件,方法,语句或块之间的克隆。 本教程适用于Java上的文件级...
  • ntation)是搭载Elasticsearch与代码克隆检测接近,包括代码正常化,正-grams和查询降低技术,构建在顶部的代码克隆搜索系统。 它可以在几秒钟内从大量 Java 源代码库中可扩展地搜索 Type-1 到 Type-3/Type-4 的克隆...
  • 代码克隆是非常相似的独立代码片段。 在已开发一段时间的应用程序中,常会出现这种现象。 克隆提高了更改应用程序的难度,因为你必须找到并更新多个片段。 Visual Studio Ultimate 或 Visual Studio Premium ...

    代码克隆是非常相似的独立代码片段。 在已开发一段时间的应用程序中,常会出现这种现象。 克隆提高了更改应用程序的难度,因为你必须找到并更新多个片段。

    Visual Studio Ultimate 或 Visual Studio Premium 可帮助你查找代码克隆,以便你进行重构。

    你可以查找特定片段的克隆,也可以查找解决方案中的所有克隆。 除了发现直接复制的片段外,克隆分析工具还可以找到变量和参数名称不同的片段,以及某些语句重新排列的片段。

    代码克隆分析器可用于在整个 Visual Studio 解决方案中搜索 Visual C# 和 Visual Basic 项目中的重复代码。

    高度匹配的代码克隆分析结果

    查找特定代码片段的克隆

    1. 突出显示方法或 get/set 定义中的代码片段。

      说明 说明

      你可以查找语句克隆,但不能查找字段、方法或属性签名等声明。

    2. 在片段的快捷菜单上,选择“在解决方案中查找匹配的克隆”

    当你想知道解决方案中是否已存在相似的方法或片段时,请使用此方法。

    查找解决方案中的所有克隆

    • “分析”菜单上,选择“分析解决方案是否有代码克隆”

    当你审查代码时,此方法尤其有用。

    说明 说明

    此命令不会扫描长度少于 10 个语句的方法。

    结果按相似性顺序呈现。 展开每个项可查看代码片段。

    请注意,即使相似片段所使用的局部变量具有不同的名称,并且插入或删除了几个语句,也会被检测到。

    比较克隆

    1. “代码克隆结果”窗口中,选择两个文件或包含两个文件的克隆组。

    2. 从快捷菜单中选择“比较”

    此功能使用的比较工具与比较源代码管理下的版本所使用的工具相同。 如果要更改它,请从“工具”菜单中选择“选项” 展开“源代码管理”“Visual Studio Team Foundation Server” 选择“配置用户工具”,然后选择“添加”

    从分析中排除特定文件或方法

    1. 向定义了要排除的方法的 Visual Studio 项目中添加新 XML 文件。

      该文件是否属于该项目并不重要。 它必须位于项目的顶层目录中。

    2. 将文件扩展名更改为 .codeclonesettings

    3. 编辑文件的内容,使其类似于以下示例。

      XML
      <CodeCloneSettings>
        <Exclusions>
          <!-- Add any combination of the following node types. -->
          <!-- Absolute or relative path names: -->
          <File>MyFile.cs</File>
          <!-- Filepaths may contain wildcards: -->
          <File>GeneratedFiles\*.cs</File>
          <!-- Namespace, Type, and FunctionName must be fully qualified: -->
          <Namespace>MyCompany.MyProject</Namespace>
          <Type>MyCompany.MyProject.MyClass1</Type>
          <FunctionName>MyCompany.MyProject.MyClass2.MyMethod</FunctionName>
          <!-- Names may contain wildcards: -->
          <Namespace>*.AnotherProject</Namespace>
          <Type>*.AnotherClass*</Type>
          <FunctionName>MyProject.*.AnotherMethod</FunctionName>
        </Exclusions>
      </CodeCloneSettings>      
      

    代码克隆分析器将查找“在一定限制范围内”的克隆。

    代码克隆通常是由于开发人员复制代码后又根据新位置进行改写而产生的。 因此,最简单的做法是,考虑对克隆的更改达到何种程度以后分析器才会找不到克隆。 在进行下列修改后,克隆仍可被识别。 在每种情况下,此类修改的数量都有一定的限制:

    • 重命名标识符。

    • 插入和删除语句。

    • 重新排列语句。

    • 系统不会比较类型声明。 例如,你有两个字段声明组非常相似的类,系统不会将其报告为克隆。

      系统只会比较方法和属性定义中的语句。

    • “分析解决方案是否有代码克隆”不会在长度少于 10 个语句的方法中查找克隆。

      但是,你可以对较短的片段应用“在解决方案中查找匹配的克隆”

    • 已更改标记超过 40% 的片段。

    • 如果项目包含 .codeclonesettings 文件,并且 .codeclonesettings 文件的 Exclusions 部分中指定了代码元素,则系统不会搜索该项目中定义的这些代码元素。

    • 生成的某些种类的代码:

      1. *.designer.cs*.designer.vb

      2. InitializeComponent 方法

      但是,此方法不会自动应用于所有生成的代码。 例如,使用文本模板时,你可能希望通过在 .codeclonesettings 文件中指定生成的文件来排除它们。

    在以下情况中查找克隆通常有用:

    • 更新现有代码时。修复 bug 或响应需求的变化时,一般首先会在需要更改的代码中查找位置。 在进行更改之前,搜索该代码片段的克隆。 如果发现克隆:

      1. 考虑是否需要对每个克隆进行相同的更改。

      2. 考虑这是否也是一个重构克隆代码的好机会,以便添加到共享方法或类中。

    • 体系结构清理。在每次迭代结束时,请使用“分析”菜单上的“分析解决方案是否有代码克隆”

    • 创建编码时。编写新代码后,请使用该工具查找已存在的相似代码。

    大型项目的完全独立的部分之间经常复制代码,而且经常复制到组织的不同部分。 因此,你应当在尽可能大的代码库中查找克隆,而不是仅在你处理的当前解决方案中查找。

    若要在源树间应用代码克隆分析器,请创建一个包含存储库中所有项目的解决方案。

    提示 提示

    请记住,一个项目可包含在多个解决方案中。 若要分析大量项目中是否有代码克隆,可以创建一个包含所有项目的解决方案。 无需从通常借以访问项目的解决方案中移除项目。

    代码克隆分析不适合与生成的代码一起使用。 例如:

    • 由 T4 模板生成的代码。

      有关 T4 的更多信息,请参见 代码生成和 T4 文本模板

    • 从设计器生成的代码,例如 Silverlight 或 WPF 用户界面设计器。

    从代码克隆分析中排除由 T4 模板生成的文件

    1. 将模板放在 Visual Studio 项目的一个子目录下。 为其命名,例如 GeneratedFiles

    2. 向项目中添加新的文本文件,将其名称和扩展名更改为 t4Exclusions.codeclonesettings

    3. 如下更改文件内容:

      XML
      <CodeCloneSettings>
        <Exclusions>
          <File>GeneratedFiles\*.cs</File>
        </Exclusions>
      </CodeCloneSettings>

    文章出处:https://msdn.microsoft.com/zh-cn/library/hh205279(v=vs.120).aspx
    展开全文
  • CLIONE是一个代码克隆修改支持bot。 CLIONE执行是由“拉取请求”触发的,它会在拉取请求之间通知不一致修改或新添加的克隆集。 用作GitHub机器人 单击注册您要应用CLIONE的GitHub帐户和存储库。 在您的项目中创建....
  • 代码克隆(Code Clone)

    2020-06-09 21:04:35
    代码克隆类型 Four Clone Types. Type I Identical fragments except for variations in comments and layout. Type II Identical fragments except for variations in identifier names and literal values in ...

    代码克隆类型

    Four Clone Types

    Type I

    In Type I clones, a copied code fragment is the same as the original. These code clones are identical code clones with some modification in white space and comments.
    在这里插入图片描述

    Type II

    A Type II clone is a code fragment that is the same as the original except for some possible variations about the corresponding names of user-defined identifiers (name of variables, constants, class, methods and so on), types, layout and comments.
    在这里插入图片描述

    Type III

    Syntactically similar fragments that differ at the statement level. The fragments have statements added, modified, or removed with respect to each other.
    在这里插入图片描述

    Type IV

    Syntactically dissimilar fragments that implement the same functionality. Type I, II, and III clones indicate textual similarity whereas Type IV clones indicate functional similarity.
    在这里插入图片描述

    1. Type-1: Identical code fragments differing by whitespace, comments
    2. Type-2: Identical code fragments differing by identifier names or literal values
    3. Type-3: Code fragments that have statements added, modified, or removed
    4. Type-4: Code fragments that semantically perform the same computation with little syntactic similarity.

    展开全文
  • 该存储库包含工具,中间结果以及我们的代码克隆研究的基准。 文件夹结构如下: 1_study-objects-我们测试过的克隆检测工具分析的源代码 2_detection-parameter-我们使用的克隆检测工具的参数 3_cloning-reports-...
  • 这被称为代码克隆,是使软件维护变得非常困难的一个因素。 一个值得注意的主要缺点是这个重复的片段,如果在一个代码片段中搜索错误,那么应该调查几个以前的类似类型的片段,以验证可能的存在形式作为类似的错误在...
  • 代码克隆的类别总结

    千次阅读 2016-08-31 19:24:54
    写在前面的话这篇文章是翻译了 A Survey on Software Clone Detection Research这篇文章的第7小节,作者是:Chanchal Kumar Roy and James R. Cordy 在语言上我做了一些修改,让它...对于两个相似的代码段,要么是它

    写在前面的话

    这篇文章是翻译了 A Survey on Software Clone Detection Research这篇文章的第7小节,作者是:Chanchal Kumar Roy and James R. Cordy
    在语言上我做了一些修改,让它比较符合我说话的习惯。


    所有不懂的事情自己一点点弄明白。加油,doggy~

    对于两个代码片段来说,基本来说有两种相似性。对于两个相似的代码段,要么是它们的程序文本相似(代码的某些片段相似)要么是它们的功能是相似的但是程序的文本没有任何相似的地方。

    对于第一类代码克隆(code clone)来说主要的原因就是复制了某个代码片段然后把它粘贴到了其他你需要的地方。

    对于代码克隆我们主要把它们分为文本相似功能相似


    文本相似:

    我们基于文本相似把代码可能分为了下面的三类:

    【类型一】: 代码片段是完全相同的,除了空格,代码的布局格式或者是注释不同

    【类型二】:代码的结构或者是代码的语法构成都是相同的,除了用户定义的变量,常量值,类型,布局或者是注释有不同

    【类型三】:复制粘贴的代码片段被做了一些改动。除了在类型二上的变动之外,程序本身可能增加,删除修改了部分语句


    功能相似性

    【类型四】:如果两个代码片段的功能是相似的或者是完全相同的, 例如:他们有相同的前后条件,我们把这种叫做语义克隆


    **
    这些克隆的的类型从类型1到类型4他们的变化是逐级递增的,同样的他们的分析难度以及检测难度也是逐级递增的。类型1最低,类型4最难。检测类型4的代码克隆需要大量的程序构建背景知识和软件设计的背景知识。

    下面我们给每个程序克隆举几个例子。

    类型一

    类型一其实就是复制的代码片段和原来的代码片段是一样的。但是他们在空格或者是在行,tabs这些地方有些许的不同,注释和布局的地方也有不同。类型一就是我们广泛知道的精确克隆。

    考虑下面的代码段:

     if ( a >= b){
           c = b + d; //coomment 1
           d = d + 1;
     }
     else
           c = d-a;  //comment 2

    一个精确的代码复制能够如下所示:

    if ( a>= b){
        //comment
        c=d+b;
        d=d+1;
    }
    else //comment2
        c=d-a

    我们可以发现上面的这两段代码片段都是文本相似的是(甚至是在移出了空格和注释以后,行和行之间都是相似的)当然就算移出了空格和注释,在结构上是不同的,但是我们也认为这是类型一,如下面这段代码所示:

    if(a>=b)
    {   //comment 1
        c=d+b;
        d=d+1;
    }
    else //comemnt2
    c=d-a

    但是现有的一行一行检测对比技术对于第一个代码段和第三个代码段可能就会失效。

    类型二

    类型二的克隆代码段和原始的代码段大部分是相同的,除了用户自定义的标识符(变量名,常量名,类名,方法名),布局和注释不同。 系统自定义的关键字(保留字)和句子的结构是完全和源代码一直的。

    下面来看下面的代码片段:

    if(a>=b){
        c = d + b; //comment
        d = d + 1;
    }
    else
        c = d - a; //comment

    类型二的代码克隆片段:

    if (m>=n)
    { //comment1'
        y = x + n;
        x = x + 5; //comment3
    }
    else
        y = x - m; //comment2

    对于上面的两个代码片段我们可以看出来,在布局,变量名和赋值语句上都有很大的区别。但是它们在语法的结构上是相似的。


    类型三

    类型三在语句上做了更多的修改。比如说:增加,删除,修改。

    考虑下面的代码片段:

    if (a>=b){
        c = d + b; //comment1
        d = d + 1;}
    else
        c = d - a; //comment2

    如果我们在我们的这段代码中添加一个语句 e=1 之后我们可以得到

    if (a>=b){
        c = d + b; //comment1
        e = 1; // This statement is added
        d = d + 1;}
    else
        c = d - a; //comment2

    像这样插入一条新的语句就是我们说的类型三。

    我们在看一个例子:
    下面的这个代码片段不同的地方我们将在表格中展现出来。

    这里写图片描述

    两个代码段不同的地方
    这里写图片描述

    类型四

    类型四指的是语义上相似的代码片段。对于这种类型的复制,克隆的代码片段并不需要复制原始的代码。两个代码甚至有完全不同的执行逻辑。

    看下面的两个代码段。
    他们都是实现阶乘,一个用了循环,一个用了递归,最后的执行结果是完全相同。

    这里写图片描述

    这里写图片描述



    写在后面的话

    如果我说不吻你不罢休,谁能逼我将就

    我没有不快乐,只是还有一点淡淡的心痛,有时候明知道一段感情像无底洞,有始无终,还是愿意挂念还是不愿放手。

    我今天很想你,很想很想,我也不知道是在想你还是想我为你规划的未来的所有美好

    你必需非常努力才可以看起来毫不费力,狗狗加油~

                                            my dear Mr. lovable
    
    展开全文
  • 遍历目录树java源码
  • git helper工具可使用单行代码克隆/打开/自动安装/编辑git项目。 > gito cesarferreira / dryrun -e 产品特点 快速克隆任何git项目并更改目录。 可以自动在finder打开文件夹。 可以在任何编辑器中自动打开项目...
  • 代码克隆是主要问题。 为了解决代码克隆检测的目的,正在上传检测词法和句法特征的代码,我们需要输入相似的代码,看看匹配句法和匹配词法值是否相同。
  • PoliceAgency_Cloning 韩国国家警察局网站代码克隆HTML / CSS 网页样本(索引)
  • 代码克隆和开发人员行为:克隆研究社区的两次调查的结果
  • 基于索引的分布式代码克隆检测 Write
  • 1、首先需要下载并安装好git for window... git config --global user.name "你的github用户名" git config --global user.email "你的github邮箱地址" 6、进入要克隆的本地目录下,git clone +你想要克隆的项目地址。

    1、首先需要下载并安装好git for window。
    下载地址:https://gitforwindows.org/

    2、进入git bash,使用如下命令,按三次回车,即可完成秘钥生成。

    ssh-keygen -t rsa -C "github邮箱"
    

    3、查看生成的key,并将其复制到剪贴板。

    cat ~/.ssh/id_rsa.pub
    

    4、登录到GitHub,打开设置界面,在SSH Keys栏中点击“Add SSH key”按钮,然后复制上面生成的秘钥。
    在这里插入图片描述
    5、进入本地git控制台,首次安装git的机器,一定要首先进行用户账户信息的配置。

    git config --global user.name "你的github用户名"
    git config --global user.email "你的github邮箱地址"
    

    6、进入要克隆的本地目录下,git clone +你想要克隆的项目地址。
    在这里插入图片描述

    展开全文
  • Cloning_PoliceAgency 韩国国家警察局网站代码克隆HTML / CSS 网页样本(索引)
  • 代码克隆检测技术的Android应用重打包检测.pdf
  • 1、从git仓库克隆git地址 2、在所在的项目文件夹下 往git仓库里添加文件 git add . 提交仓库里的文件 git commit -m ‘初始化’ 3、git push origin master 推送到主分支master 4、检出另一个新的分支...
  • 高级代码克隆UniversaL分析器
  • QQ空间代码克隆工具ASP极速版 可以快速查询任意QQ空间里面的模块 输入QQ号即可查询 程序使用ASP代码无数据库,应重多网友的要求特发出此代码,适合新手学习 程序为简单版本,一般无权限限制空间可复制。复制的...
  • mentohust:由Mentohust的GoogleCodeSVN源代码克隆至此

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 183,075
精华内容 73,230
关键字:

代码克隆