代码之家  ›  专栏  ›  技术社区  ›  vitaly.v.ch

我需要一个工具,以找到重复或类似的文本块在一个单一的文本文件或文本文件集

  •  5
  • vitaly.v.ch  · 技术社区  · 15 年前

    我想自动将重复的或类似的C代码移动到函数中。

    6 回复  |  直到 15 年前
        1
  •  4
  •   miku    15 年前

    问题的一个子集:检测重复代码:

    尝试: PMD

    • 首先,我们使用Michael Wise贪婪字符串平铺算法的一个变体编写了它(我们的变体在这里描述)
    • 最后,由Steve Hawkins重写,以使用Karp-Rabin字符串匹配算法。

    ...

    注意CPD使用java、JSP、C++、Fortran和PHP代码工作。

        2
  •  1
  •   Mark Ewer    15 年前

    Simian(前面提到过)是一个很好的工具。我一直在使用 CloneDetective 在我的项目上,效果很好。CloneDetect是免费的,所以尝试一下也无妨。

        3
  •  1
  •   Thomas Matthews    15 年前

    例如,给定两个等价但使用不同标识符的函数,文本搜索不会将它们视为相同的,但解析器可以。

    还要注意,编写C++解析器不是一个简单的任务,即使在给出语法时也是如此。我建议别人的建议,并为此寻找一个工具。还可以搜索重构工具。

        4
  •  1
  •   Ira Baxter    14 年前

    CloneDR ,这是一个用于在源代码中查找精确副本和未遂(复制粘贴编辑)克隆的工具。它使用完整的语言解析器,使它能够根据语言结构查找克隆,最大限度地减少误报,并且完全不依赖于代码的注释或格式,从而最大限度地实现真实检测。当克隆的块已更改变量、插入的状态或代码块时,克隆器将查找克隆。

    它有C语言、C++语言、COBOL语言、C语言、java语言、PHP语言以及其他语言语言。

    您可以在网站上查看克隆检测报告示例。

        5
  •  1
  •   Dave Cahill John Feminella    3 年前

    你会想看看 Simian

    # Find all C source files and identify similarities/duplicate code.
    simian -includes=**/*.c -excludes=**/*_test.c
    
        6
  •  0
  •   Hengqing Hu    12 年前

    https://github.com/hudayou/fib

    用于在文件或目录中查找相同代码块的工具。