2010-02-02 34 views
10

不幸的是,最近我一直在研究的項目有大量的複製粘貼代碼,即使在單個文件中也是如此。是否有任何工具或技術可以檢測單個文件中的重複或接近重複?我有Beyond Compare 3,它比較單獨的文件效果很好,但是我比較單個文件卻不知所措。消除單個文件中的代碼重複

在此先感謝。

編輯:

感謝所有的偉大的工具!我一定會檢查出來的。

該項目是一個ASP.NET/C#項目,但我使用各種語言,包括Java;我對什麼工具最好(適用於任何語言)感興趣,以消除重複。

+0

的解決方案是針對不同的語言完全不同。標記爲ASP.NET/C#。 – Tronic 2010-02-02 19:32:57

+0

正確,但我想知道最流行語言的最佳工具(因爲我一次使用多種語言)。不過謝謝。 – 2010-02-02 20:31:01

+0

CloneDR解決方案對許多語言都是* *。 CloneDR處理C#,Java,HTML和JavaScript,我認爲這很好地涵蓋了OP的「ASP.NET」情況。 – 2010-02-12 01:03:02

回答

0

Resharper這是否自動的 - 它表明,當它認爲代碼應該被提取到的方法,並會做提取你

4

退房Atomiq。它會查找重複的代碼,以便提取到一個位置。

http://www.getatomiq.com/

+0

... .Net無論如何。 :) – 2010-02-02 05:03:00

+0

CopyPasteKiller已被重新命名爲Atomiq,現在是30美元(這似乎是合理的)。 http://nimblepros.com/products/atomiq.aspx – 2010-06-17 18:16:35

0

退房PMD,一旦你已經配置(這是稍微簡單的),你可以運行它copy paste detector找到重複的代碼。

1

請參閱SD CloneDR,這是一種用於檢測多個文件內和跨多個文件的複製粘貼編輯代碼的工具。它可以檢測到確切的副本,已重新格式化的副本以及具有不同標識符,文字和甚至不同語句序列的接近錯過的副本。

CloneDR處理多種語言,包括Java(1.4,1.5,1.6)和C#,特別是C#4.0。您可以在網站上查看樣本克隆檢測報告,還包括一個用於C#的樣本。

1

你不說你正在使用什麼語言,這會影響你可以使用的工具。對於Python有CloneDigger。它也支持Java,但我沒有嘗試過。它可以在單個文件和文件之間找到代碼重複,並將結果作爲HTML中的差異式報告。

0

其中一些辦公室工作技能可以在1分鐘內做以下順序:

  • 使用普通格式統一代碼風格,最好不換行
  • 喂代碼文本到Microsoft Excel作爲一列
  • 搜索和替換所有雙位單一個和做其他的替代品
  • 排序列

此時,重複的關鍵字已被很好地檢測到。但是,再去進一步

  • 附加比較公式到第二欄和反以3
  • 複製和粘貼值,排序和看到最多的重複線路
0

有一個分析工具,稱爲Simian ,我還沒有嘗試過。據推測,它可以在任何類型的文本上運行並指出重複的項目。它可以通過命令行界面使用。