2009-07-09 6 views
15

In der nahen Zukunft erben wir ein etwas großes Projekt. Ich habe kürzlich einige kleine Aktualisierungen vorgenommen und festgestellt, dass Teile davon ein Refactoring verwenden können, da es Methoden gibt, die denselben Vorgang mit einem kleinen Unterschied ausführen.Existiert es: Wiederholter Code Finder?

Ich frage mich, ob es ein Tool gibt, das eine Menge Quellcode benötigt und ähnliche Code-Blöcke findet, damit sie für ein mögliches Refactoring identifiziert werden können. Es wäre großartig, wenn es eine unscharfe Suche geben würde, so dass es eine ähnliche Operation erkennen könnte (anders als nur Wiederholungen von Code, die wörtlich wiederholt werden).

Ich erwarte nicht, dass das Programm den Code selbst umgestaltet, nur mögliche Wiederholungen identifizieren.

Meine Plattform ist C#, aber jede Lösung wäre hilfreich

+0

möglich duplicate of [Wie finde ich ein ähnliches Codefragment?] (Http://stackoverflow.com/questions/709744/how-to-find-a-similar-code-fragment) –

Antwort

8

http://www.codeplex.com/CloneDetectiveVS

"Clone Detective ist ein Visual Studio-Integration, die Sie C# -Projekten für Quellcode analysieren können, die irgendwo anders dupliziert wird."

Es passiert viel, visuell, wenn Sie es bei einem Projekt mit viel Code kopieren. Wenn dies zum ersten Mal mit der Verwendung von Clone Detective kombiniert wird, kann es anfangs etwas überwältigend sein.

Ich empfehle dieses Tool wirklich. Es ist exzellent.

+0

Der Code, den ich vererbe ist derzeit .Net 1.1 (offensichtlich erfordert VS .NET), so dass dies mir bei diesem Projekt nicht helfen wird, bis wir es für mindestens 2.0 aktualisieren. Aber das wird bei jedem anderen Projekt helfen, bei dem ich gerade bin! Werde einen Blick darauf werfen, +1 –

+0

Ausgewählt als Antwort weil: Es integriert sich in meine aktuelle IDE für die meisten Projekte; Große Schnittstelle; und seine Open Source. Simian sieht gut aus, aber ich plane, dies in einer kommerziellen Umgebung zu verwenden, und die Kosten sind unerschwinglich (für mich) –

+1

Obwohl es kein Problem seit September 2010 sein könnte, scheint Clone Detective Visual Studio 2010 nicht zu unterstützen. – Jafin

5

CPD Arbeiten auf der Token-Ebene, so sollte mit C# in Ordnung sein. Es hat einige Mechanismen, um Variablennamen und andere Identifikatoren herauszufiltern.

5

Ich habe es nie benutzt, aber Simian funktionieren könnte für Sie

Simian (Ähnlichkeit Analyser) identifiziert Duplizierung in Java, C#, C, C++, COBOL, Ruby, JSP, ASP, HTML , XML, Visual Basic, Groovy-Quellcode und sogar reine Textdateien. In der Tat, Simian kann auf jedem Menschen lesbar Dateien wie Ini-Dateien, Deployment Deskriptoren verwendet werden, nennen Sie es.

+0

Ich habe Simian benutzt, und ich werde es nicht wieder tun. Ich würde es sicherlich niemandem empfehlen. Ich habe auch Clone Detective benutzt, und es ist eine ausgezeichnete Anwendung. – MagicAndi

2

Simian ist ein Produkt, das behauptet, Quellcode in verschiedenen Sprachen einschließlich C# zu analysieren. Ich habe es nie benutzt, also kann ich es überhaupt nicht garantieren. Es ist kostenlos für nicht-kommerzielle Nutzung, und sie werden es Ihnen für kommerzielle Projekte verkaufen.

4

Ich verwende derzeit Duplicate Finder. Es funktioniert mit jeder Textdatei, und ich habe es sehr erfolgreich in meinen C# -Projekten verwendet. Es ist eine Befehlszeile, also habe ich es in meine Build-Prozesse integriert.

1

Wenn Sie daran denken, doppelten Code in einem Projekt zu finden, sollten Sie vielleicht auch die Verwendung von breiteren static code analysis Tools in Betracht ziehen.

So etwas wie Sonar prüft auf doppelten Code, Codierungsstandards, Komponententests, Codeabdeckung, komplexen Code, mögliche Bugs, Kommentare und Design und Architektur.

Sie können eine list of static code analysis tools on Wikipedia finden.

Verwandte Themen