Frage

Ich brauche ein Werkzeug, das C ++ Quellen und sagt analysiert, was Code nicht verwendet wird. Größe der Quellen ist ~ 500mb

War es hilfreich?

Lösung

PC-Lint ist gut. Wenn es schwinden Free / Open Source Ihre Wahl sein muss. Cppcheck ist frei, und wird für nicht verwendete private Veranstaltungen überprüfen. Ich glaube nicht, dass es für Dinge wie instanziierten Klassen wie PC-Lint aussieht.

Andere Tipps

Noch einmal, ich werde werfen AQTime in die Diskussion. Hat statische Code-Analyse für die meisten, wenn nicht alle der unterstützten Sprachen. Ich habe nicht wirklich ging in den Teil, obwohl ich vor allem die dynamischen Profilometer verwendet (Speicher, Leistung und so weiter).

Sie können ein Code Coverage Tool (dynamische Analyse) verwenden, um eine Vorstellung davon zu bekommen, was Code nicht wird ausgeführt, und dann Hand analysieren, um zu sehen, ob das Code wirklich nutzlos ist.

Wenn Sie eine statische Analyse möchten, müssen Sie ein Tool, das die gesamte lesen 500Mb des Quellcodes (est. 20 Millionen Zeilen? Wow!) Und berechnen ein konservative Schätzung, was verwendet wird. Dies erfordert einen Punkt-zu tun Analyse über das gesamte System.

Hier ist der Grund: Wenn Sie ein Modul Z auslassen, und entscheiden, dass FOO nicht verwendet wird, können Sie herauszufinden, könnte später, dass Z passiert ist derjenige zu sein, der FOO verwendet, oder subtiler, kopiert Z einen Wert Zeiger, der haben, passiert & FOO in es zu einem dritten Modul M, das die „ungenutzt“ Funktion wiederum aufgerufen Throught den Zeiger.

Das bedeutet, dass kein statisches Analyse-Tool, das liest gerade Einzelmodule (Übersetzungseinheiten) kann diese Frage sicher beantworten. Und auf die Waage, können Sie nicht stumm Fehler erlauben.

Meine Firma, Semantic Designs hat getan Punkte-Analyse für 35 Millionen Leitungssysteme unsere DMS Software Reengineering Toolkit von C-Code. DMS können lesen sehr große Systeme von Quellcode. es bedurfte ein Spezialwerkzeug, nicht so sehr wegen der Quellcode wurde in einer ungeraden (archiac) Dialekt von C ++ (Systeme in äußerst modernen Dialekte kann das nicht groß sein, nicht genug Zeit, um sie zu codieren!), sondern weil in sehr großen Systemen es gibt noch andere eigentümliche Faktoren im Spiel. Für das C-System haben wir, es gab einen benutzerdefinierten dynamischen Linker, und das beeinflusst die Punkte-Analyse, was wiederum hatte angepasst werden.

Da Systeme der Skala euch alle Tage Überraschungen wie diese haben diskutieren (BIBSEH: „Weil in Big Systems, alles geschieht“), werden Sie wahrscheinlich benötigt ein eigenes Werkzeug, um die Frage zu beantworten. DMS ist so konzipiert, individuell gestaltet werden kann. Siehe http://www.semanticdesigns.com/Products/DMS/DMSToolkit.html und http://www.semanticdesigns.com/Products/FrontEnds/CppFrontEnd.html

Code-Coverage-Tool ist, was Sie brauchen, aber Sie werden unser Programm durch alle Funktionen laufen müssen und sehen, was als nicht verwendet repoted wird. Da der Code DLL Funktionen exportiert werden könnten, werden Sie sie sicher nichts nutzt extern machen. Einige Code-Coverage-Tools. Entschlacken, CTC ++, Bounds können Code-Coverage-Funktionalität hat, wenn ich nach rechts und ein paar anderen Werkzeugen erinnert

Seien Sie sehr vorsichtig über jede Funktion zu entfernen, die ohne zu wissen, was externes Programm ausgeführt wurden, kann es auch sein mag Verknüpfung / verwendet wird.

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