Ich betrachte einen C / C ++ - Code, der Funktionen zu haben scheint, die definiert, aber nie verwendet werden. Dies ist ein ziemlich langwieriger Prozess, um den Code zu verfolgen und zu überprüfen. Ich habe einige Umfragen durchgeführt und es gibt eine Reihe von Tools, die diese Art der Analyse durchführen können.
Kann jemand Erfahrungen oder Tipps darüber teilen, welche Tools und Techniken am besten geeignet sind oder welche alternativen Methoden zur Überprüfung dieses Codes tatsächlich nicht verwendet werden?
Antworten:
Es gibt einige Tools, die "toten Code" in Ihren Programmen finden können. Sie können hier und hier über Stack Overflow-Threads lesen . eine kleine Zusammenfassung:
Verwenden Sie die gcc-Compiler-Flags -Wunused und -Wunreachable-Code und verwenden Sie dann ein Tool wie lcov, um die nicht verwendeten Methoden zu finden.
quelle
Spur? Warum? Kommentieren Sie sie einfach aus und durchlaufen Sie den Compiler. Es wird Ihnen schnell sagen, ob Sie eine Funktion auskommentiert haben, auf die an anderer Stelle verwiesen wurde.
quelle
Wenn Sie aktiv nach nicht verwendetem Code suchen, verwenden Sie einen Vorschlag von Jake223 .
Wenn Sie jedoch nur auf Code stoßen, der nicht verwendet zu werden scheint, können Sie einfach nach dem Namen der Methode in Ihrer Codebasis suchen. Wenn es sich um eine private Methode handelt, ist Ihre Arbeit einfach. Suchen Sie nur die aktuelle Klasse. Wenn es sich um eine öffentliche Methode handelt, durchsuchen Sie alles. Wenn es sich um eine ganze Klasse handelt, suchen Sie in Ihrem gesamten Code nach dem Namen.
Kein Treffer? Perfekt. Löschen Sie den Code und führen Sie Tests aus . Sie haben Tests, nicht wahr? Übernehmen Sie dann Ihre Änderungen in Ihr Dokumentversionssystem . Sie benutzen eine, nicht wahr? Auf diese Weise können Sie eine Änderung rückgängig machen, wenn Sie jemals feststellen, dass Sie sie zurück benötigen.
Das Löschen von Code sollte etwas sein, das Sie jeden Tag tun. Vielleicht überarbeiten Sie einen Code und löschen den alten. Oder suchen Sie alten, nicht verwendeten Code und löschen Sie ihn. Und selbst wenn Sie keine Backups haben, wie schwierig ist es, ein oder zwei Funktionen neu zu schreiben? Und beim zweiten Mal werden Sie sie sicherlich besser schreiben als zuvor.
quelle
Es sei denn, Sie suchen nach Ärger (dh Sie wissen, dass sie angerufen werden sollten), warum sich die Mühe machen. Wenn sie wirklich nicht aufgerufen werden, werden sie wahrscheinlich vom Linker entfernt, und in jedem Fall ist der verschwendete Speicherplatz nicht signifikant. Wenn Sie sie jedoch entfernen und später feststellen, dass sie benötigt werden (möglicherweise in einer Compiler-Konfiguration, die Ihnen nicht bekannt war), müssen Sie mehr Arbeit leisten, um sie wiederherzustellen. Dies ist besonders schwierig, wenn das Entfernen und Wiederentdecken viel Zeit voneinander entfernt ist.
quelle
Meine bevorzugte IDE ist Eclipse, und obwohl das Einrichten zunächst umständlich und etwas mühsam ist, lohnt sich die Mühe angesichts aller Tools, die ich bekomme. Ein solches Tool (und ich habe keine Ahnung, wie der offizielle Name lautet) informiert Sie über nicht verwendeten Code wie Klassen, Funktionen, Variablen usw. Die IDE zeigt einfach eine gelbe Linie unter der Deklaration an. Ich bin mir nicht 100% sicher, ob dies mit Projekten mit mehreren Dateien funktioniert, aber Sie könnten es jederzeit versuchen!
quelle
IDEs haben diese Funktion normalerweise gut implementiert und sie funktioniert standardmäßig (sie kann normalerweise deaktiviert werden).
Unabhängig davon, welche Methode Sie aus den anderen Antworten auswählen, um toten Code zu finden, sollten Sie sich immer der Reflexionsprobleme bewusst sein. Auf einige Methoden / Felder kann allein durch Reflexion zugegriffen werden. Das Entfernen dieser Methoden löst außer zur Laufzeit keinen Alarm aus.
Wenn Sie (gute) Tests für Ihre Projekte geschrieben haben, sind diese in dieser Situation von großem Wert.
quelle
Sie können Cppcheck für diesen Zweck verwenden:
quelle