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.

Foi útil?

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.

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

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top