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?

War es hilfreich?

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 .

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