2011-01-14 17 views
3

我想重構一個python模塊,其中主要問題是重複代碼。我可以使用什麼工具查看同一文件的兩個部分的差異?

是否有任何工具可以用來查看兩個選定部分的差異,以便我可以看到那些幾乎相同的代碼之間的差異?

+2

如何剪切這兩個部分並粘貼到兩個新文件,然後使用任何好的diff工具,如meld,kdiff3甚至普通的舊diff? – sinelaw 2011-01-14 03:25:15

回答

3

儘管我不認爲界面很好,但請檢查Clone Digger。請參閱example

Thinking Craftsman's Tool Kit (TC Toolkit)可能更容易找到重複的代碼,但似乎沒有提供良好的可視化效果。

編輯:如果您願意付錢,Atomiq看起來很有趣。

爲了獲得良好的可視化,我取得了一些成功Diffuse,因爲它允許任意匹配行從一個文件到其他: Diffuse

然而,我不得不真正的文件有不同的名稱的東西複製工作得很好。

1

我使用ExamDiff Pro處理所有文件差異。這是一個圖形分析器。

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

+0

Thx爲您的推薦,但這只是Windows。 – satoru 2011-01-14 06:28:00

+0

@ Satoru-san:你應該在標題中提到Windows的問題,然後...... – 2011-01-14 06:55:38

3

我做這個偶爾使用Emacs之前:

  1. 克隆間接緩衝(M-x clone-indirect-buffer)。
  2. 標記一個部分並將其縮小(C-x n n)。
  3. 切換到原始緩衝區並縮小到其他部分。
  4. 在緩衝區及其克隆上運行Ediff(M-x ediff-two-buffers)。

一個不錯的振作是你可以合併它們之間的塊,它不會混淆。

-1

Beyond Compare的文本比較有一個「打開剪貼板」命令,可以在剪貼板上放置比較結果的一側。如果您然後複製第二個函數並再次使用該命令,則會突出顯示差異。

0

如果您只有一個文件中有克隆,並且您知道它們在哪裏,克隆檢測工具可能會矯枉過正。但他們檢測克隆並直接顯示給你的能力似乎正是你想要的。

我們的CloneDR具有Python特定版本。如果它發現了克隆(即使在「相同」文件中),它也會單獨向您顯示它們,並且它會根據該語言(Python)規則顯示它們的具體差異,而不僅僅是佈局,包括克隆各不相同,確切地說它們的變化。 (據我所知,Atomiq只會檢測具有完全相同文本行的克隆)。

CloneDR在Windows下運行就好了。

相關問題