2009-03-05 3 views
6

Ich habe eine C# -Anwendung mit Visual Studio 2005. Der Code hat etwa 300 KLOC, die über 3 Jahre missbraucht wurde.Aufräumen unerwünschten Code C#

Als ich durch den Code ging, fand ich viele ungenutzte Funktionen/Methoden/Eigenschaften. Es ist nicht möglich, den Code manuell zu säubern (Erfordert die Überprüfung jedes Mitglieds und wenn keine Referenzen gefunden werden, löscht es.)

Ich bin auf der Suche nach diesem Prozess zu automatisieren, durch VS Makro, die durch jedes Mitglied in Code gehen wird, wenn es tut keine Verweise es sollte es löschen, wenn irgendwelche Verweise gefunden werden, überprüfen Sie die Referenzen seines aufrufenden Mitglieds, wenn es ein Mitglied anruft, hat keinen Verweis, es sollte beide löschen und so weiter.

Ich bin sicher, jemand hätte es früher geknackt.

+1

Hoffentlich verwendet die App keine Reflektion, um Methoden aufzurufen. – kenny

Antwort

13

Resharper hat eine Clean Code-Funktion und gibt ziemlich gute Hinweise darauf, welche Methoden/Klassen nicht verwendet werden.

+0

Ich bin nicht sicher, ob es automatisiert ist oder nicht ... aber Resharper gibt an, ob eine Methode Referenzen hat. –

4

Sie können Ihre Codebasis mit NDepend mithilfe von CQL abfragen, um herauszufinden, welche Methoden und Klassen nicht verwendet werden.

+0

NDepend wird Ihnen helfen, die Codebasis noch besser zu verstehen, indem Sie Informationen über die am häufigsten verwendeten Typen, Abhängigkeiten zwischen Typen, direkte und indirekte Abhängigkeiten, gemessene Komplexität von Typen und Methoden usw. bereitstellen. – flq

0

Erstgebrauch schärfer als andere vorgeschlagen haben.

Resharper geht davon aus, dass öffentliche Methoden irgendwo von einer externen Assembly verwendet werden, auch wenn dies nicht der Fall ist. Suchen Sie also "public" durch "private" und rekompilieren Sie.

4

Achten Sie auf Code, der über Reflektion aufgerufen wird. Viele Refactoring-Tools werden diesen Code als nicht zugegriffen markieren, wenn sie tatsächlich sind.

Am sichersten ist es, die Komponententests vor und nach dem Refactoring auszuführen (Sie haben diese bereits richtig?), Um sicherzustellen, dass alles noch funktioniert.

0

Ich habe (wie FxCop) verwendet, um festzustellen, welcher Code nicht aufgerufen wurde. AFAIK kann nicht automatisiert werden, aber Sie müssen nicht Zeile für Zeile gehen.