Werkzeuge für die Suche nach nicht verwendeten Funktionsdeklarationen?
Frage
Während einige alte Code Refactoring Ich erkannte, dass eine bestimmte Header-Datei für Funktionen von Funktionsdeklarationen voll war längst aus der CPP-Datei entfernt. Kennt jemand ein Tool, das (und -bänder) diese automatisch gefunden?
Lösung
Sie können, wenn möglich, eine test.cpp Datei machen sie alle zu nennen, der Linker-Flag diejenigen, die keinen Code als ungelöst, auf diese Weise Ihre Test-Code nur haben müssen zusammenstellen und sich keine Sorgen über tatsächlich ausgeführt wird.
Andere Tipps
PC-lint kann für spezielle Zwecke tunned werden:
Ich testete den folgenden Code vor für Ihre Frage:
void foo(int );
int main()
{
return 0;
}
lint.bat test_unused.cpp
und bekam folgendes Ergebnis:
============================================================ --- Module: test_unused.cpp (C++) --- Wrap-up for Module: test_unused.cpp Info 752: local declarator 'foo(int)' (line 2, file test_unused.cpp) not referenced test_unused.cpp(2) : Info 830: Location cited in prior message ============================================================
So können Sie die Warnnummer 752 für Ihre puropse passieren kann:
lint.bat -"e*" +e752 test_unused.cpp
-e „*“ werden alle Warnungen entfernen und + e752 wird sich auf dieser spezifischen
Wenn Sie Index mit Doxygen zu codieren, können Sie aus sehen, wo wird jede Funktion verwiesen wird. Allerdings würde man durch jede Klasse (1 HTML-Seite pro Klasse) durchsuchen müssen und scannen für diejenigen, die sie haben nichts zeigen.
Alternativ können Sie ctags verwenden Liste aller Funktionen im Code zu generieren, und verwenden Sie dann objdump oder ein ähnliches Werkzeug Liste aller Funktionen in .o-Dateien zu erhalten - und dann diese Listen vergleichen. Dies kann jedoch problematisch sein wegen Namensverkürzung.
Ich glaube nicht, gibt es eine solche Sache, weil einige Funktionen nicht einen Körper in der eigentlichen Quellbaum mit möglicherweise in einer externen Bibliothek definiert werden. Dies kann nur durch die Schaffung eines Skripts durchgeführt werden, die eine Liste der deklarierten Funktionen in einem Header macht und überprüft, ob sie manchmal genannt wird.
Ich habe einen C ++ ftplugin für vim die in der Lage ist, überprüfen und unübertroffene Funktionen berichten - vimmers ist die ftplugin Suite noch nicht einfach zu installieren. Die ftplugin basiert auf ctags Ergebnisse (daher der heuristische leicht auf andere Umgebungen angepasst werden könnte), manchmal gibt es Fehlalarme im Fall von Inline-Funktionen.
HTH,
Zusätzlich Doxygen (@Milan Babuskov), können Sie sehen, ob es Warnungen für diese in Ihrem Compiler. Z.B. gcc hat -Wunused-Funktion für statische Funktionen; -fdump-IPV-cgraph.
Ich habe gute Dinge gehört über PC-Lint , aber ich glaube, es für Ihre Bedürfnisse wahrscheinlich übertrieben ist .