Esiste una sintassi ultra veloce per il mio codice, ma non la modalità di compilazione per g ++/clang? Dove l'unico obiettivo è controllare se il codice che ho è un codice C++ valido?g ++/clang analisi ultra veloce ma non in modalità compilazione?
15
A
risposta
15
-fsyntax-only per GCC, probabilmente dovrebbe funzionare anche per Clang poiché emulano le opzioni della riga di comando di GCC. Indipendentemente dal fatto che sia significativamente più veloce, dovrai tempo.
0
Si può dare un'occhiata a gcc-xml (http://www.gccxml.org/HTML/Index.html), che riutilizza il frontend gcc per produrre una descrizione xml dell'origine.
Un'altra opzione è utilizzare il frontend edg (http://www.edg.com/index.php?location=c_frontend), ma non è open source e non è economico.
0
Forse cppcheck è un'opzione per voi? Non so esattamente quale risultato desideri. cppcheck non è un controllo di pura sintassi. E se cppcheck è veloce enougth.
Il problema di velocità è in realtà il tempo impiegato per l'I/O di lettura sorgente, il controllo della sintassi, la quantità di tempo di compilazione e il tempo di esecuzione dell'I/O di output dell'oggetto. Sospetto che con una quantità sufficiente di sorgenti, l'I/O di lettura possa essere una porzione ampia e vedrete un guadagno minimo dal solo controllo della sintassi. –
@Mark: Nella mia esperienza il caching dell'output compilato con ccache ha avuto quasi sempre un senso. E non dimenticare che C++ potrebbe anche includere template che possono far salire alle stelle i tempi di compilazione. –
Nota che in g ++, questo solo analizza il codice e non crea un'istanza, quindi puoi perdere molti errori. clang ++ si ferma dopo l'istanziazione, che può richiedere più tempo ma è più utile. Inoltre, alcuni degli avvertimenti g ++ vengono prodotti durante la fase di ottimizzazione del codice, quindi ti mancheranno anche quelli. –