我可以使用哪些工具来查看同一文件的两个部分的差异?

时间:2011-01-14 03:21:04

标签: python refactoring diff

我正在尝试重构一个python模块,其中主要问题是重复代码。

是否有任何工具可用于查看两个选定部分的差异,以便我可以看到几乎相同的代码之间的区别?

5 个答案:

答案 0 :(得分:3)

虽然我不认为界面很棒,但请检查Clone Digger。请参阅example

Thinking Craftsman's Tool Kit (TC Toolkit)可能会更容易找到重复的代码,但似乎无法提供良好的可视化效果。

编辑:如果您愿意付款,Atomiq看起来很有趣。

为了获得良好的可视化效果,Diffuse取得了一些成功,因为它允许从一个文件到另一个文件的任意匹配行: Diffuse

但是,我必须使用不同的名称复制文件才能正常工作。

答案 1 :(得分:3)

我在使用Emacs之前偶尔会这样做:

  1. 克隆间接缓冲区(M-x clone-indirect-buffer)。
  2. 标记一个部分并缩小(C-x n n)。
  3. 切换到原始缓冲区并缩小到其他部分。
  4. 在缓冲区及其克隆上运行Ediff(M-x ediff-two-buffers)。
  5. 一个很好的特权是你可以在它们之间合并块,它不会混淆。

答案 2 :(得分:1)

我将ExamDiff Pro用于所有文件差异。这是一个图形分析器。

http://www.prestosoft.com/edp_examdiffpro.asp

答案 3 :(得分:0)

如果您只在一个文件中包含克隆并且您知道它们在哪里,则克隆检测工具可能过度。但是,他们能够直接检测克隆并向您显示克隆,这似乎正是您想要的。

我们的CloneDR有一个特定于Python的版本。如果它找到克隆(即使在“相同”文件中),它会单独向您显示它们,它会根据该语言(Python)规则显示它们的确切区别,而不仅仅是布局,包括克隆的位置变化,确切地说它们的变化。 (Atomiq,据我所知,它只会检测具有完全相同文本行的克隆)。

CloneDR在Windows下运行就好了。

答案 4 :(得分:-1)

Beyond Compare的文本比较有一个“打开剪贴板”命令,它会在比较的一侧放置剪贴板上的内容。如果您随后复制第二个函数并再次使用该命令,则会将它们与高亮显示的差异对齐。