Czy jest jakiś sposób na znalezienie podobnych plików (nie duplikatów)?

12

Moim ostatnim celem jest refaktoryzacja kodu napisanego przez moich współpracowników. Czy istnieje narzędzie, które może znaleźć pliki różniące się tylko kilkoma słowami?

(Edycja: dotyczy komputerów Mac, ale inni mogą również polubić odpowiedzi inne niż Mac).

Tig
źródło
@harry, biorąc pod uwagę historię zmian , myślę, że opublikowałeś odpowiedź systemu Windows, która została odrzucona, ponieważ dopiero wtedy pojawił się wymóg Maca? Wolę zrezygnować z wymagań dotyczących komputerów Mac i zobaczyć twoją odpowiedź (jeśli była to dobra odpowiedź spoza komputera Mac)!
Arjan
@Arjan: Gotowe.
harrymc
W przypadku komputerów Mac zastanawiałem się, czy można użyć Spotlight. Wątpię, ale jeśli znasz sposób robienia rzeczy w Spotlight, to mdfindpolecenie może pomóc napisać skrypt do automatyzacji rzeczy. Myślę jednak, że zawsze będzie używać tylko metadanych. Dlatego znalezienie podobnych plików może ograniczać typ pliku, ale nie zawartość pliku. Bez cygara
Arjan

Odpowiedzi:

5

Simian robi to dla kodu źródłowego niektórych języków. Najlepiej jest znaleźć rażące kodowanie kopiuj-wklej. Wydaje się, że jego rozwój utknął w martwym punkcie, ale działa wystarczająco dobrze.

Benjamin Bannier
źródło
Nie pomogło to zbytnio - w aplikacji szynowej z wieloma bardzo podobnymi częściami tylko powiedziałem, że mam podobne linie w rozwoju.
Log
Czy masz odpowiednie pliki do analizy? Prawdopodobnie zależy Ci na swoich źródłach development.log. Aby zapoznać się z szynami, zobacz flay rubyforge.org/frs/…
Benjamin Bannier
Tak, podałem wszystkie pliki w aplikacji
Rails
2

(Dla Windowsa)

Produkt Anti-Twin (bezpłatny do użytku prywatnego) twierdzi, że jest w stanie to zrobić:

Jeśli chcesz, aby Anti-Twin wyszukiwał nie tylko pełne duplikaty, ale także podobne pliki, możesz zmniejszyć żądane minimalne dopasowanie z wartości domyślnej 100% do 60%. Ta funkcja została specjalnie zaprojektowana do wyszukiwania prawie identycznych plików, w których zmieniono tylko mały szczegół. Anti-Twin korzysta z wyszukiwania podobieństwa, gdy tylko wprowadzisz wartość poniżej 100%. Porównanie podobieństwa trwa znacznie dłużej niż wyszukiwanie w 100% pełnych duplikatów!

Niestety wyszukiwanie podobieństwa w ramach porównania bajt po bajcie ma sens tylko dla kilku typów plików, ponieważ podobieństwo można wykryć tylko wtedy, gdy pliki są nieskompresowane i niezaszyfrowane. Pliki nieskompresowane to np. Niesformatowane teksty (.TXT) i HTML.

harrymc
źródło
Używam Maca i przeglądam coś przez wino, podobieństwa lub coś takiego, nie ułatwi refaktoryzacji, tylko trudniej :)
tig
@tig: Powinieneś to określić w swoim poście. Dodałem tag mac.
harrymc
@Arjan: Usunąłem tę odpowiedź, tak jak prosiłeś.
harrymc
słusznie tak! [mac]Znów usunąłem tag. Tak powinno być [osx];-)
Arjan