Statische Analysewerkzeuge für C- und C ++ - Programme können eine Überprüfung nicht verwendeter Präprozessor-Makros enthalten.
Siehe zum Beispiel PC-Lint .
Eine andere Möglichkeit wäre, in bestimmte Include-Dateien zu gehen und #ifdef 0
zu verwenden, um große Teile von Makros zu entfernen und dann die Compilerfehler mit einer Art von Divide and Conquer-Algorithmus zu überprüfen.
Allerdings würde ich erwarten, dass ein statisches Analysewerkzeug viel besser wäre, wenn die Quellcodegröße groß wird.
Für nicht verwendete Makros sollten Sie sich coan ansehen. Es hat Optionen, die bei dieser Aufgabe helfen könnten. Von der Seite :
Welche Symbole würden in aktiven Präprozessordirektiven unter einer bestimmten Konfiguration erscheinen?
(Eine Präprozessordirektive ist aktiv, wenn sie nicht im Bereich einer falschen #if liegt). Angenommen, Sie sind an der C-Quelle in der App interessiert, können Sie eine Liste dieser Symbole mit Dateinamen und Zeilennummern mit folgendem Befehl anzeigen:
$ & gt; coan Symbole --recurse --locate --active --once --filter c, h app
Es verfügt über Optionen zum Entfernen konditionierter Codeblöcke ( #if 0
und Freunde) und viele andere nützliche Funktionen für den Umgang mit dem C-Präprozessor. Ich würde es benutzen, um alle #define
d Symbole und alle #ifdef
oder defined
Symbole und Freunde zu sammeln. Ich würde diese beiden Sammlungen von Symbolen sortieren und vereinheitlichen und sie vergleichen. Dies ist eine gute Möglichkeit, Tippfehler zu finden. Dann würde ich ein Histogramm von ihnen getrennt nehmen und mit den am wenigsten häufigen anfangen und sich die Listen hocharbeiten.
Für unbenutzte Typedefs ist das eine weitere Herausforderung. Sie können ein Programm vom Querverweistyp wie OpenGrok oder GNU Global , aber das ist nicht sehr automatisch.