O flag silêncios aviso do GCC sobre nenhuma nova linha no arquivo terminações?
-
08-07-2019 - |
Pergunta
Acabei de ler este post sobre porque novo- existem avisos de linha, mas para ser honesto a minha equipe tem pessoas que trabalham em várias plataformas diferentes e com vários editores diferentes (todos usa o que bests suites eles), de modo que o aviso tornou-se onipresente, e desde a sua não é realmente uma pena de advertência cuidar do que é tornar-se o ruído e faz encontrar avisos sérios problemas.
Muitas vezes os avisos importantes têm porque despercebida se foi, as pessoas se acostumaram a ter um zilhão advertências inúteis passar, para que eles, obviamente, apenas parar de olhar para eles com cuidado, e com razão IMHO. Pode-se dizer, no nosso caso GCC está chorando lobo demais para alguém para levá-la mais a sério, o que é uma atitude ruim, mas a sua apenas a natureza humana.
Agora nós compilar com -Wall
, porque queremos advertências, mas existe um contador de bandeira para evitar os avisos de nova linha?
Nota:. eu olhei através da um pouco manual, mas não encontrou a resposta em qualquer lugar óbvio para deram
Nota: Em resposta à solução totalmente razoável de Robert Gamble, nosso código é multi-plataforma e temos pessoas e se baseia em Linux, Solaris e Windows, assim que a nova linha ... não é sob consenso. E compilador Alguém sempre vai cry-lobo. Porque há mais de 40 desenvolvedores e outro pessoal não programador também.
Solução
Não é um tanto quanto eu sei, eu GCC usado por anos.
Update: Não deve haver quaisquer avisos levantadas com C 11 ++ padrão. Q relacionada
Outras dicas
Assumindo que você use algum tipo de sistema de controle de origem, você pode adicionar um gancho pre-commit que garante que os arquivos de texto termina com uma nova linha adequada. Além disso, dependendo de qual sistema de controle de origem que você usa, você pode adicionar um gancho pre-commit que realmente correções a linha que termina se não é presente.
Por que você não apenas garantir que seus arquivos tenham uma nova linha de terminação como eles deveriam? Esta deve ser uma simples mudança na configuração nos editores de ofender e parece ser uma maneira muito fácil de "silêncio" o aviso.
-Wno-eof-newline
Este foi adicionado com a correção para gcc bug 14331
Curiosamente eu não posso realmente ter gcc para a saída de um aviso para novas linhas ausentes. Eu acho que as versões mais recentes têm dispensado com este aviso por completo.
posso obter gcc para aceitar -Wno-eof-newline
mas queixa-se de bandeiras não reconhecidos quando tento -Weof-newline
. C ++ 11 removida a exigência de novas linhas no final de arquivos, mas para escrever código portátil nos velhos padrões que realmente deve ser possível permitir que esses avisos pedantes.
Felizmente clang que ainda suporta corretamente diagnósticos sobre novas linhas ausentes:. Este aviso pode ser habilitado com -Wnewline-eof
em todos os modos, ou em C ++ 11 e modos mais elevados também pode ser habilitado com -Wc++98-compat-pedantic
Estes avisos são desativados por padrão, mas se você está aproveitando bandeira -Weverything
do clang para permitir uma estratégia de 'subtrativo' para avisos que controlam, em seguida, em C ++ 11 e mais elevados modos você precisa tanto -Wno-newline-eof
e -Wno-c++98-compat-pedantic
para desativar o aviso.
Eu estou 90% de certeza que não há arguemnt para desligar isso.
A razão para o aviso é que os arquivos sem uma linha final dar indefinido comportamento quando compilado:
Veja standard: http://c0x.coding-guidelines.com/5.1.1.2.html
Aqui está um post com algum código python (que eu não tentei), que diz que vai Fixup arquivos de origem com esta questão.
Adicionar um gancho para o seu controle de origem que não vai permitir check-in de código bem-sucedida até o de nova linha é adicionada?