2010-07-11 18 views

risposta

49

L'opzione da riga di comando -fmax-errors=N indirizza il compilatore a rinunciare dopo gli errori N. Questa opzione è presente in GCC 4.6 e successive.

L'opzione da riga di comando -Wfatal-errors indica al compilatore di abbandonare dopo un errore. Questa opzione è presente in GCC 4.0 e versioni successive.

In entrambi i casi, gli avvertimenti non contano fino al limite a meno che non si specifichi anche -Werror.

+5

Darei questo +1 ma per la frase su '-Werror'. Credo che gli avvertimenti assolutamente * dovrebbero * essere trattati come se fossero errori, perché la maggior parte degli avvertimenti è un'indicazione del codice buggato. – greyfade

+0

@Zack, grazie, sto già usando questo flag :) – yegor256

+2

@greyfade, penso anche che gli avvertimenti dovrebbero generalmente essere trattati come must-fix, ma sfortunatamente alcuni degli avvertimenti di gcc possono attivarsi o meno a seconda del livello di ottimizzazione, il contenuto di le intestazioni di sistema e qualsiasi numero di altre cose che non puoi controllare facilmente.Quindi, puoi ottenere tutti gli avvertimenti sulla tua piattaforma di costruzione canonica, ma poi un povero schmuck cerca di costruire in un ambiente più esotico e fa esplodere. – zwol

2

Devo chiedere perché vorresti farlo. A volte l'errore che esiste nel codice non è il primo o addirittura trovato nei primi cinque errori. A volte è al di là di questo e solo è riconoscibile una volta scorrere l'elenco. Un metodo migliore potrebbe essere quello di suddividere il codice e inserirlo in librerie più piccole se si è infastiditi dai tempi di compilazione. Oppure, se ti preoccupi delle cose che scorrono dallo schermo di una riga di comando, usa l'operatore '>>' per reindirizzare i messaggi in un file.

+1

È solo una questione di leggibilità del registro degli errori. 5 errori sono più che sufficienti per capire il problema, almeno nel mio caso :) – yegor256

+12

Davvero? La mia esperienza è stata esattamente l'opposto - specialmente in C++, a meno che non stia facendo specifici lavori di refactoring che creano molti errori discreti (cambiando gli argomenti in un metodo comunemente usato, ad esempio) è probabile che il primo errore sia l'unico che è assolutamente inutile. – zwol

+0

@ FaZend.com Vedo, mi dispiace, ho fornito una non risposta allora. La risposta di Zack qui sotto è probabilmente la migliore che riuscirai a fare a meno che tu non abbia intenzione di scrivere un piccolo script per analizzare questi errori e uccidere il processo dopo che sono stati generati 5 errori. (anche se potrei essere abbastanza ignorante in questa affermazione.) – wheaties

4

Gradirei anche una simile opzione. Per ora, sto usando la seguente soluzione alternativa per ottenere i primi cinque errori:

<make> 2>&1|grep error|head -5 
39

È possibile utilizzare l'opzione gcc:

-fmax-errors=5 

per questo scopo.

+0

Questo dovrebbe essere un commento. – Zyerah

+6

@Telthien Perché? Questa mi sembra una risposta. –

+12

@Telthien http://stackoverflow.com/questions/how-to-answer dice "ogni risposta che fa andare il richiedente nella giusta direzione è utile" e "la brevità è accettabile". Le risposte sono progettate per fornire una soluzione, a volte può essere realizzata in una singola frase. –

Problemi correlati