2012-12-28 6 views
10

Ohne den Code zu kompilieren, möchte ich, dass GCC oder Clang Warnungen meldet.
Kann der Compiler nur für die statische Analyse ausgeführt werden?
Ich kann keinen Weg finden, um den Compiler Warning Flags zu übergeben und sagen, es nicht zu kompilieren.Wie kann ich GCC/Clang für die statische Analyse ausführen? (nur Warnungen)

edit: gerade gefunden, dass Klappern eine static analyser

+5

Versuchen Sie '-fsyntax-only'. –

+0

@KerrekSB perfekt! Danke –

+0

@KerrekSB: Verschieben Sie es, um zu antworten :) – Jack

Antwort

10

Beide GCC und Clang haben hat eine Option -fsyntax-only, die der Compiler Syntax nur durchführen, ohne jede tatsächliche Kompilierung Überprüfung macht.

+6

Allerdings ist es wichtig zu beachten, dass die Flagge ist viel nützlicher für Clang, für G ++ tut es nicht Template Instanziierung, was bedeutet, viel von möglichen Diagnosen werden verpasst –

4

Zusätzlich zu den anderen Antworten führt gcc während der Kompilierung (und sogar während einiger Optimierungsdurchläufe) eine Analyse durch. So können Sie den generierten Code verwerfen und dennoch alle Warnungen mit z. gcc -Wall -O -c code.c -o /dev/null

Beachten Sie, dass Sie GCC mit Ihren zusätzlichen Durchläufen erweitern könnten, indem Sie zusätzliche, anwendungsspezifische Überprüfungen und Warnungen, z. mit MELT (eine high-level domänenspezifische Sprache zur Erweiterung von GCC).

Wenn Sie eine starke statische Analyse wünschen und bereit sind, zusätzliche Anmerkungen für diesen Zweck zu geben, ziehen Sie auch Frama C in Betracht.

Verwandte Themen