Wie erkenne ich nicht verwendete Makrodefinitionen & typedefs?

8

Es ist einfach, eine Liste unbenutzter Funktionen und Variablen mit Linker-Feedback zu erhalten, aber wie kann ich diese ungenutzten Makrodefinitionen & amp; Typdefs? Muss ich den Code Zeile für Zeile durchsuchen und grep im gesamten Projekt durchsuchen?

    
xdan 15.05.2013, 02:36
quelle

4 Antworten

7

Bei Makros, die in Quelldateien definiert sind, können Sie -Wunused-macros gcc / clang flag versuchen. Es gibt auch -Wunused-local-typedefs in gcc.

    
yachoor 15.05.2013 09:04
quelle
7

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.

    
Richard Chambers 15.05.2013 02:44
quelle
2

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.

    
ldav1s 15.05.2013 05:22
quelle
1

Es gibt cscout (jetzt open source) bei:

Ссылка

das findet unbenutztes 'extern', #define.

    
damorin 05.10.2015 12:14
quelle

Tags und Links