Sinalizadores de aviso completos e detalhados para compilações C com g
Gcc fornece um conjunto abrangente de sinalizadores de aviso para ajudar os desenvolvedores a detectar possíveis problemas em seu código. Para ativar avisos completos e detalhados em C , considere as seguintes recomendações:
Avisos essenciais:
- -pedantic: siga regras rigorosas Padrões da linguagem C.
- -Wall: ativa todos os padrões comumente aceitos warnings.
- -Wextra: expande o escopo do aviso além de -Wall.
- -Wcast-align: detecta projeções de ponteiro desalinhadas.
- -Wcast-qual: Avisa sobre alterações no tipo de ponteiro qualificadores.
- -Wctor-dtor-privacy: destaque problemas com modificadores de acesso do construtor de classe e do destruidor.
- -Wdisabled-optimization: identifique o código que pode ser otimizado, mas não é.
- -Wformat=2: Melhore o manuseio do especificador de formato durante compilação.
- -Winit-self: evita que as variáveis sejam reinicializadas para si mesmas.
- -Wlogical-op: detecta possíveis problemas de precedência do operador.
- -Wmissing-declarations: Avisa sobre declarações faltantes de variáveis e funções.
- -Wmissing-include-dirs: Destaque diretórios de inclusão ausentes.
- -Wnoexcept: Incentive mecanismos de tratamento de exceções.
- -Wold-style-cast: Identifique possível compatibilidade de código problemas.
- -Woverloaded-virtual: avisa sobre sobrecargas de métodos virtuais.
- -Wredundant-decls: aponta declarações redundantes.
- -Wshadow: Evita o sombreamento não intencional de variáveis.
- -Wsign-conversion: detecta possíveis erros de conversão de sinal.
- -Wsign-promo: destaca possíveis problemas de promoção de sinal.
- -Wstrict-null-sentinel: Aumente a segurança do código controlando o sentinela nulo valores.
- -Wstrict-overflow=5: limite o nível de estouro de número inteiro a cinco avisos.
- -Wswitch-default: garanta a abrangência manipulação de instrução switch.
- -Wundef: avisa sobre variáveis indefinidas ou macros.
- -Wno-unused: exclui avisos de variáveis não utilizadas para melhorar o foco em questões mais críticas.
Avisos opcionais, mas questionáveis:
- -Wdisabled-optimization: pode indicar um código abaixo do ideal, mas não necessariamente um erro.
- -Wfloat-equal: potencialmente causa falsos positivos para comparações de igualdade seguras.
- -Wold-style-cast: pode ter falso positivos em bibliotecas de terceiros.
- -Wsign-conversion: Requer atenção cuidadosa aos tipos de dados para evitar erros.
- -Wsign-promo: considerações semelhantes a -Wsign-conversion.
- -Wswitch-default: impõe o tratamento explícito da instrução switch casos, mas pode ser entediante.
Avisos para Excluir:
Esses avisos são omitidos devido a possíveis falsos positivos ou utilidade limitada:
- -Wabi: Requer compilação de binários de diversas fontes.
- -Wgregate-return: pode indicar o tipo de dados implícito conversões.
- -Wconversion: pode gerar avisos para conversões implícitas inofensivas.
- -Weffc : pode estar repleto de avisos não relacionados.
- -Winline: pode não ser aplicável em todos os métodos inline cenários.
- -Winvalid-pch: não se aplica a projetos que não usam cabeçalhos pré-compilados.
- -Wmissing-format-attribute : Requer extensões GNU não comumente usadas.
- -Wpadded: Requer otimização manual de layouts de classe.
- -Wstack-protector: Requer sinalizadores de compilador específicos para proteção de pilha.
- -Wstrict-aliasing=3: Oferece recursos adicionais limitados avisos em comparação com níveis mais baixos.
- -Wswitch-enum: excessivamente restritivo e pode não ser adequado para todos os casos de uso.
- -Wunsafe-loop-optimizations: pode gerar avisos falsos em determinados cenários.