"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Quais sinalizadores de aviso g++ devo usar para uma análise completa do código C++?

Quais sinalizadores de aviso g++ devo usar para uma análise completa do código C++?

Publicado em 2024-12-22
Navegar:896

What g   Warning Flags Should I Use for Thorough C   Code Analysis?

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.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3