Credo che la questione principale ora è, stai testando che il codice o il compilatore a questo punto?
Test del compilatore non è necessariamente una cosa negativa ... Ho avuto aggiornamenti del compilatore in passato, quindi sarebbe bello assicurarsi di ottenere lo stesso set di controlli di sicurezza che ci si aspetta.
Tuttavia, dovrai fare molto lavoro di gambe. Il tuo test unitario dovrà generare il compilatore, catturarne l'output e analizzarlo per la corretta dichiarazione di errore sulla linea corretta. Non è banale, e probabilmente non ne vale la pena.
Un approccio leggermente più semplice potrebbe essere quello di mantenere una directory di codice errato e disporre di uno script per compilare ogni file uno alla volta. Avere un flag "#fdef MAKEFAIL" lì dentro che attiva le condizioni esatte che dovrebbero fallire. Assicurati che il compilatore restituisca 0 quando non imposti quel flag e non zero quando lo fai. Ciò presuppone che il compilatore restituisca un valore diverso da zero in caso di errore ... Non so se MSVC segua questa regola.
Una terza opzione che lancerò lì, per indirizzare la portabilità, è autoconf. Può essere difficile da configurare, ma parte del suo scopo era quello di garantire un ambiente di sviluppo sano prima della compilazione. Potresti aggiungere un test come questo e lasciare gestire il compilatore e provarlo.
fonte
2009-07-13 22:15:34
Buona domanda. Mi sono chiesto lo stesso prima. Non ho mai trovato una buona risposta.Ovviamente potresti scrivere uno script che tenta di compilare il file e verificare il codice di errore o qualcosa del genere, ma non è certo una soluzione elegante. – jalf