Quale flag mette a tacere l'avvertimento di GCC in merito a nessuna nuova riga alla fine del file?

StackOverflow https://stackoverflow.com/questions/282851

  •  08-07-2019
  •  | 
  •  

Domanda

Ho appena letto questo post sul perché new- esistono avvisi di linea, ma a dire il vero il mio team ha persone che lavorano su diverse piattaforme e con diversi editor (tutti usano ciò che è meglio di loro), quindi l'avvertimento è diventato onnipresente e poiché non è proprio un avvertimento vale la pena prendersene cura diventa rumore e rende fastidioso trovare avvisi seri.

Molte volte importanti avvisi sono passati inosservati perché, le persone si sono abituate a passare un gazillion di avvisi inutili, quindi ovviamente smettono di guardarli attentamente e con ragione IMHO. Si potrebbe dire nel nostro caso che GCC sta piangendo troppo sul lupo perché chiunque lo prenda più sul serio, il che è un atteggiamento negativo ma è solo una natura umana.

In questo momento compiliamo con -Wall , perché vogliamo avvertimenti, ma esiste un counter flag per evitare gli avvisi di nuova riga?

Nota: ho guardato un po 'nel manuale ma non ho trovato la risposta in nessun posto ovvia, quindi ho rinunciato.

Nota: in risposta alla soluzione totalmente ragionevole di Robert Gamble, il nostro codice è multipiattaforma e abbiamo persone e build su Linux, Solaris e Windows, quindi la nuova linea ... non lo è sotto consenso. E il compilatore di qualcuno farà sempre piangere-lupo. Perché ci sono oltre 40 sviluppatori e anche altro personale non programmatore.

È stato utile?

Soluzione

Non ce n'è uno per quanto ne so, ho usato GCC per anni.

Aggiornamento: Non dovrebbero essere generati avvisi con lo standard C ++ 11. Q correlata

Altri suggerimenti

Supponendo che tu usi un qualche tipo di sistema di controllo del codice sorgente, potresti aggiungere un hook pre-commit che assicuri che i file di testo finiscano con una nuova riga corretta. Inoltre, a seconda del sistema di controllo del codice sorgente utilizzato, è possibile aggiungere un hook pre-commit che risolve la linea che termina se non è presente.

Perché non ti assicuri solo che i tuoi file abbiano una nuova riga finale come dovrebbero? Questo dovrebbe essere un semplice cambio di configurazione negli editor offensivi e sembra un modo abbastanza semplice per "mettere a tacere" l'avvertimento.

-Wno-eof-newline

Questo è stato aggiunto con la correzione per bug gcc 14331


Stranamente, in realtà non riesco a far sì che gcc emetta un avviso per le righe mancanti. Immagino che le versioni più recenti abbiano rinunciato del tutto a questo avvertimento.

Posso ottenere gcc per accettare -Wno-eof-newline ma mi lamento di flag non riconosciuti quando provo -Weof-newline . C ++ 11 ha rimosso il requisito per le nuove righe alla fine dei file ma per scrivere codice portatile nei vecchi standard dovrebbe davvero essere possibile abilitare tali avvisi pedanti.


Fortunatamente clang supporta ancora correttamente la diagnostica su newline mancanti: questo avviso può essere abilitato con -Wnewline-eof in tutte le modalità o in C ++ 11 e versioni successive può anche essere abilitato con -WC ++ 98-compat-pedante .

Questi avvisi sono disattivati ??per impostazione predefinita, ma se stai sfruttando il flag -Weverything di clang per abilitare una strategia 'sottrattiva' per il controllo degli avvisi, allora in C ++ 11 e modalità superiori puoi sono necessari sia -Wno-newline-eof sia -Wno-c ++ 98-compat-pedantic per disabilitare l'avviso.

Sono sicuro al 90% che non ci sono argomenti per disattivarlo.

Il motivo dell'avviso è che i file senza una linea di fondo danno un comportamento indefinito quando vengono compilati:

Vedi standard: http://c0x.coding-guidelines.com/5.1.1.2.html

Ecco un post sul blog con un po 'di codice Python (che non ho ancora provato) che dice che risolverà i file di origine con questo problema.

http://www.johndcook.com/blog/tag/gcc/

Aggiungere un hook al controllo del codice sorgente che non consentirà il check-in del codice corretto fino a quando non viene aggiunta la nuova riga?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top