2012-12-28 7 views
10

Senza codice di compilazione, vorrei che GCC o Clang segnalassero gli avvisi.
È possibile eseguire il compilatore solo per analisi statiche?
Non riesco a trovare un modo per passare i flag di avviso del compilatore e dirgli di non compilare.Come posso eseguire GCC/Clang per l'analisi statica? (solo avvertimenti)

Edit: appena scoperto che ha un clang static analyser

+5

Prova '-fsyntax-only'. –

+0

@KerrekSB perfetto! grazie –

+0

@KerrekSB: spostalo per rispondere :) – Jack

risposta

10

Sia GCC e Clang avere un'opzione -fsyntax-only che rende il compilatore solo eseguire il controllo della sintassi, senza alcuna compilazione vera e propria.

+6

Tuttavia, è importante notare che il flag è molto più utile per clang, per G ++ non rende l'istanziazione del modello, che significa molto di possibili diagnostica sono mancati –

4

In aggiunta alle altre risposte, gcc sta eseguendo alcune analisi durante la compilazione (e anche durante alcuni passaggi di ottimizzazione). Quindi puoi scartare il codice generato e ottenere comunque tutti gli avvertimenti con ad es. gcc -Wall -O -c code.c -o /dev/null

Si noti che è possibile estendere GCC con i passaggi aggiuntivi eseguendo alcuni controlli e avvisi aggiuntivi specifici dell'applicazione, ad es. con MELT (un linguaggio di dominio di alto livello specifico per estendere GCC).

Se si desidera una forte analisi statica e si desidera fornire ulteriori annotazioni a tale scopo, considerare anche Frama C.