Ich möchte foo() löschen, wenn foo() nicht von irgendwoher aufgerufen wird.
Es ist zu mühsam, dies einzeln zu tun. Ich habe nach einem Tool gesucht, das den gesamten Code durchforstet.
Ich möchte foo() löschen, wenn foo() nicht von irgendwoher aufgerufen wird.
Das Werkzeug NDepend kann helfen, ungenutzten Code in einer .NET-Codebasis zu finden. Haftungsausschluss: Ich bin einer der Entwickler dieses Tools.
NDepend schlägt vor zu schreiben Code-Regel über LINQ-Abfrage (CQLinq) . Rund um 200 Standard-Codierungsregeln vorgeschlagen, von denen 3 folgenden Themen gewidmet sind unbenutzter/toter Code Erkennung:
NDepend ist in Visual Studio integriert, daher können diese Regeln direkt in der IDE geprüft/gebrowst/bearbeitet . Das Tool kann auch in Ihren CI-Prozess integriert werden und es kann Berichte die die verletzten Regeln und die schuldigen Codeelemente anzeigt.
Wenn Sie diese 3 Links zum Quellcode dieser Regeln anklicken, werden Sie sehen, dass die Regeln zu Typen und Methoden etwas komplex sind. Das liegt daran, dass sie nicht nur unbenutzte Typen und Methoden erkennen, sondern auch Typen und Methoden, die nur durch nicht verwendete tote Typen und Methoden (rekursiv).
Dies ist statische Analyse , daher die Vorsilbe Möglicherweise in den Regelnamen. Wenn ein Code-Element verwendet wird nur Durch Nachdenken könnten diese Regeln sie als ungenutzt betrachten, was nicht der Fall ist.
Zusätzlich zur Anwendung dieser 3 Regeln würde ich empfehlen, die Codeabdeckung durch Tests zu messen und eine vollständige Abdeckung anzustreben. Oft werden Sie feststellen, dass Code, der nicht durch Tests abgedeckt werden kann, eigentlich unbenutzt/verstorben Code, der sicher verworfen werden kann. Dies ist vor allem bei komplexen Algorithmen nützlich, bei denen nicht klar ist, ob eine Verzweigung des Codes erreichbar ist oder nicht.
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.
0 Stimmen
PC-Lint und Splint finden nicht referenzierte Methoden und Variablen.