Gibt es ein Werkzeug für die Suche nach nicht referenzierten Funktionen (tot, veralteter Code) in einem C # app? [geschlossen]

StackOverflow https://stackoverflow.com/questions/65585

  •  09-06-2019
  •  | 
  •  

Frage

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

War es hilfreich?

Lösung

Gendarme ohne vorgeschalteten Anrufer private Methoden erkennt. Er ist Cross-Plattform, und die neueste Version Griffe " AvoidUncalledPrivateCodeRule ".

FxCop public / geschützte Methoden ohne vorgeschalteten Anrufer erkennen. Allerdings ist FxCop nicht alle Methoden ohne vorgeschalteten Anrufer erkennen, wie es gemeint ist, in dem Fall zu überprüfen, dass Ihr Code Teil einer Bibliothek ist, so öffentlich Mitglieder sind außen vor. Sie können NDepend verwenden zu tun eine Suche nach öffentlichen Mitgliedern ohne vorgeschalteten Anrufer, die ich hier ausführlich in diesem anderen Stackoverflow Antwort .

(edit: hinzugefügt Informationen über Gendarme, die tatsächlich tun, was die Fragesteller fragten)

Andere Tipps

NDepend wird auch auf potenziell nicht verwendeten Code melden.

Beachten Sie, dass ReSharper (und wahrscheinlich auch andere ähnliche Werkzeuge wie auch) nicht ungenutzt Methoden markieren, wenn die Methoden public gekennzeichnet sind. Es gibt keine Möglichkeit, ein statisches Code-Analyse-Tool der Lage sein zu überprüfen, ob die Methoden der Assembly von anderen Baugruppen außerhalb Ihrer Lösung verwendet werden. So ist der erste Schritt in nicht genutzten Methoden Ausmerzung ist ihre Sichtbarkeit zu reduzieren private oder internal.

Ja, die MZ-Werkzeuge Addin eine Überprüfung von toter Code-Funktion hat.

ReSharper tut dies, und nicht nur mit Methoden. Er tut es auch bei der Verwendung von Aussagen, Variablen und so weiter.

Das Tool NDepend hilft nicht verwendeten Code in einer .NET-Code-Basis zu finden. Disclaimer:. Ich bin einer der Entwickler des Tools

NDepend schlägt -Code Regel über LINQ Query (CQLinq) zu schreiben. Rund um 200 Standardcoderegeln vorgeschlagen werden, 3 von ihnen gewidmet ist nicht genutzt / toter Code Erkennung:

NDepend ist in Visual Studio integriert, so dass diese Regeln geprüft werden können / geblättert / bearbeiten direkt in der IDE . Das Tool kann auch in Ihrem CI-Prozess integriert werden und es kann Berichte dass bauen Regeln zeigen verletzt und Schuldige Codeelemente.

Wenn Sie diese 3 Links zum Quellcode dieser Regeln klicken, sehen Sie, dass die, die Arten und Methoden betreffen, sind ein wenig komplex. Dies, weil sie nicht nur nicht verwendete Arten und Methoden erkennen, aber auch Arten und Methoden nur von nicht verwendeten toten Typen und Methoden (rekursiv).

Dies ist statische Analyse , damit das Präfix Potenziell in den Regelnamen. Wenn ein Code-Element verwendet wird nur durch Reflexion, könnten diese Regeln halten es als nicht verwendet, was nicht der Fall ist.

Zusätzlich zu diesen drei Regeln zu verwenden, würde ich Mess Code Coverage durch Tests beraten und das Streben nach einem vollständigen Abdeckung mit. Oft werden Sie diesen Code sehen, die nicht durch Tests abgedeckt werden kann, ist eigentlich nicht verwendeter / dead Code, der sicher entsorgt werden kann. Dies ist besonders nützlich in komplexen Algorithmen, wo es nicht klar ist, ob ein Zweig des Code erreichbar ist oder nicht.

Nun, wenn VS dies nicht nativ tun, eine einfache Methode ist für das Verfahren nach rechts klicken und wählen Sie „alle Verweise finden“. Wenn es nur 1 Referenz (wo sie deklariert) es höchstwahrscheinlich ist nirgendwo anders verwendet wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top