Indicadores de advertencia completos y detallados para compilaciones de C con g
Gcc proporciona un conjunto completo de indicadores de advertencia para ayudar a los desarrolladores a detectar problemas potenciales en su código. Para habilitar advertencias exhaustivas y detalladas en C, considere las siguientes recomendaciones:
Advertencias esenciales:
- -pedante: cumpla con las estrictas Estándares de lenguaje C.
- -Wall: Activa todos los comúnmente aceptados advertencias.
- -Wextra: expande el alcance de la advertencia más allá de -Wall.
- -Wcast-align: detecta lanzamientos de puntero desalineados.
- -Wcast-qual: Advierte sobre cambios en el tipo de puntero calificadores.
- -Wctor-dtor-privacy: resalta problemas con los modificadores de acceso al constructor de clases y al destructor.
- -Wdisabled-optimization: identifica código que se puede optimizar pero no lo es.
- -Wformat=2: mejora el manejo del especificador de formato durante compilación.
- -Winit-self: evita que las variables se reinicialicen a sí mismas.
- -Wlogic-op: detecta posibles problemas de precedencia de operadores.
- -Wmissing-declarations: Advierte sobre declaraciones faltantes de variables y funciones.
- -Wmissing-include-dirs: resalta los directorios de inclusión que faltan.
- -Wnoexcept: fomenta mecanismos de manejo de excepciones.
- -Wold-style-cast: Identifica la posible compatibilidad del código problemas.
- -Woverloaded-virtual: advierte sobre sobrecargas de métodos virtuales.
- -Wredundant-decls: señala declaraciones redundantes.
- -Wshadow: evita el sombreado involuntario de variables.
- -Wsign-conversion: Detecta posibles errores de conversión de signos.
- -Wsign-promo: resalta posibles problemas de promoción de signos.
- -Wstrict-null-sentinel: mejora la seguridad del código controlando el centinela nulo valores.
- -Wstrict-overflow=5: Limita el nivel de desbordamiento de enteros a cinco advertencias.
- -Wswitch-default: Garantiza exhaustivo manejo de declaraciones de cambio.
- -Wundef: Advierte sobre variables no definidas o macros.
- -Wno-unused: excluye advertencias de variables no utilizadas para mejorar el enfoque en problemas más críticos.
Advertencias opcionales pero cuestionables:
- -Wdisabled-optimization: puede indicar un código subóptimo, pero no necesariamente un error.
- -Wfloat-equal: Potencialmente causa falsos positivos para comparaciones de igualdad seguras.
- -Wold-style-cast: Puede tener false positivos en bibliotecas de terceros.
- -Wsign-conversion: requiere atención cuidadosa a los tipos de datos para evitar errores.
- -Wsign-promo: Consideraciones similares a -Wsign-conversion.
- -Wswitch-default: impone el manejo explícito de la declaración de cambio casos, pero puede resultar tedioso.
Advertencias para Excluir:
Estas advertencias se omiten debido a posibles falsos positivos o utilidad limitada:
- -Wabi: requiere compilación de archivos binarios de diversas fuentes.
- -Waggregate-return: puede indicar un tipo de datos implícito conversiones.
- -Wconversion: puede generar advertencias para conversiones implícitas inofensivas.
- -Weffc : puede estar lleno de advertencias no relacionadas.
- -Winline: puede no ser aplicable en todos los métodos en línea escenarios.
- -Winvalid-pch: No se aplica a proyectos que no utilizan encabezados precompilados.
- -Wmissing-format-attribute : Requiere extensiones GNU que no se usan comúnmente.
- -Wpadded: Requiere optimización manual de la clase diseños.
- -Wstack-protector: Requiere indicadores de compilador específicos para la protección de la pila.
- -Wstrict-aliasing=3: Ofrece advertencias adicionales limitadas en comparación con niveles inferiores.
- -Wswitch-enum: Demasiado restrictivo y puede no ser adecuado para todos los usos casos.
- -Wunsafe-loop-optimizations: Puede generar advertencias falsas en ciertos escenarios.