18 Stimmen

Gibt es ein Tool zum Auffinden nicht referenzierter Funktionen (toter, veralteter Code) in einer C#-Anwendung?

Ich möchte foo() löschen, wenn foo() nicht von irgendwoher aufgerufen wird.

0 Stimmen

PC-Lint und Splint finden nicht referenzierte Methoden und Variablen.

21voto

user7116 Punkte 61589

Gendarm erkennt private Methoden, die keine vorgelagerten Aufrufer haben. Es ist plattformübergreifend verfügbar, und die neueste Version behandelt " AvoidUncalledPrivateCodeRule ".

FxCop erkennt öffentliche/geschützte Methoden, die keine vorgelagerten Aufrufer haben. FxCop erkennt jedoch nicht alle Methoden ohne vorgelagerte Aufrufer, da es für den Fall gedacht ist, dass Ihr Code Teil einer Bibliothek ist, so dass öffentliche Mitglieder ausgelassen werden. Sie können NDepend verwenden, um nach öffentlichen Mitgliedern ohne vorgelagerte Aufrufer zu suchen, was ich hier in dieser anderen StackOverflow-Antwort ausführlich beschreibe .

(edit: Informationen über Gendarme hinzugefügt, die genau das tun, was der Fragesteller wollte)

1 Stimmen

Dies (CA1811) wird nicht für alle Arten von Methoden funktionieren, z. B. für statische öffentliche Methoden.

0 Stimmen

Außerdem ist es ein großartiges Werkzeug im Allgemeinen

0 Stimmen

@JRoppert: Ich denke, das liegt daran, dass es nicht in der Lage ist, bei der Anzahl der Durchläufe von FxCop zu erkennen, ob es wirklich nicht referenziert ist. Resharper stürzt bei mir ständig ab, so dass es nicht in Frage kommt, es zu benutzen. Trotzdem ein guter Punkt.

7voto

Ian Nelson Punkte 53679

NDepend wird auch über potenziell ungenutzten Code berichten.

0 Stimmen

Ich mag NDepend, aber es ist schwer, die Kosten dafür zu rechtfertigen, obwohl es gut mit TeamCity und den meisten anderen Build-Agenten zusammenarbeitet.

5voto

Helen Toomik Punkte 2078

Beachten Sie, dass Resharper (und wahrscheinlich auch andere ähnliche Tools) unbenutzte Methoden nicht hervorheben, wenn die Methoden mit public . Es gibt keine Möglichkeit, mit einem statischen Code-Analyse-Tool zu überprüfen, ob die Methoden Ihrer Assembly von anderen Assemblies außerhalb Ihrer Lösung verwendet werden. Der erste Schritt beim Aussortieren unbenutzter Methoden besteht also darin, ihre Sichtbarkeit auf private o internal .

2 Stimmen

ReSharper's lösungsweite Analyse wird unbenutzte nicht-private Typ- oder Member-Deklarationen aufdecken.

3voto

Kent Boogaart Punkte 170094

Resharper tut dies, und zwar nicht nur mit Methoden. Sie tut es auch mit using-Anweisungen, Variablen usw.

3voto

Scott Dorman Punkte 41206

Ja, die MZ-Tools Addin hat eine Funktion zur Überprüfung von totem Code.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X