代码之家  ›  专栏  ›  技术社区  ›  BCS

有语法意识的差异工具?[闭门]

  •  20
  • BCS  · 技术社区  · 14 年前

    是否有任何(理想情况下是GUI)不同的工具可以识别语法?

    作为我正在寻找的这类东西的一个例子,我不断发现我当前的工具未对齐重复代码:

    Foo  = { 'hello': 'world',    |  Foo  = { 'hello': 'world',
             'goodnight': 'moon'  |           'goodnight': 'moon'  
           }                      <
                                  <
    Bar  = { 'picture': 1000,     <
           }                      |         }
    

    我想要一个工具,可以尝试使匹配的大括号在一边对齐匹配的大括号在另一边。


    编辑:我正在寻找一个工具,可以自动发现这种情况,并纠正它的路线。

    5 回复  |  直到 14 年前
        1
  •  5
  •   Ira Baxter    11 年前

    不是基于GUI,而是完全由语法驱动的:我公司的 Smart Differencer 许多语言的工具(包括java、C++、C++、PHP、Python、JavaScript、HTML、XML、COBOL……)

    智能差分器 解析 源文本与编译器相似,因此它可以像编译器那样理解语言语法和结构。它会比较这些结构(使用AST)以确定这些结构上的编辑操作(移动、复制、删除、替换、重命名块中的标识符)的“最小编辑距离”,并报告它们。

    在你的例子中,它会知道右边的大括号属于foo,而不是bar,并会告诉你,整个涉及bar的语句都被删除了。

    如果要将结果提供给另一个工具,则输出样式是diff-like,如果要直接检查,则输出样式更易于人类阅读。

        2
  •  0
  •   JYelton Melchior Blausand    14 年前

    Beyond Compare 会让你重新排列不匹配的线条。我通常很幸运,它能正确地匹配线条。

        3
  •  0
  •   Jake1164 Sipka    14 年前

    我想你要找的东西是无与伦比的 http://www.scootersoftware.com/index.php

        4
  •  0
  •   Nick    14 年前

    我喜欢Source Gear的DiffMerge。

        5
  •  0
  •   austincheney    12 年前

    这个 Pretty Diff 该工具自动识别语法。它使用的过程是缩小代码以删除注释,然后美化代码以规范格式和空白。不过,它只支持少数web客户端语言。这个工具在客户端工作,所以你可以在浏览器中测试它,还有一个包含一些演示的示例页面。