¿Qué advertencias se incluyen en Clangs -Wall y -Wextra?

 C Programming >> Programación C >  >> Tags >> Clang
¿Qué advertencias se incluyen en Clangs -Wall y -Wextra?


He encontrado que la documentación de Clang es bastante pobre. No he podido encontrar gran parte de una lista de indicadores de advertencia de Clang disponibles. Estoy particularmente interesado en las advertencias de C/C++, pero esto es un problema general.


GCC enumera y describe las advertencias aquí, y también enumera lo que se incluye en -Wall y -Wextra:
https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options


¿Qué banderas de advertencia se incluyen con -Wall y -Wextra de Clang?


Puedo revisar las notas de la versión de Clang para cada versión para ver qué nuevos indicadores de advertencia se presentan cada vez (por ejemplo, http://llvm.org/releases/3.4/tools/clang/docs/ReleaseNotes.html), pero es ¿Existe una lista y/o descripción más sencilla de las advertencias de Clang? Esto sería extremadamente útil. Necesito saber qué está incluido en -Wall y qué no, para poder considerar activar los que no lo están.


(Sé que -Todo existe para Clang - ¿podría tener que recurrir a usar eso y deshabilitar explícitamente los que no me gustan? Más documentación haría que esto sea mucho más ideal).


Respuestas:


Puedes consultar el código fuente:


Por ejemplo,


def : DiagGroup<"all", [Most, Parentheses, Switch]>;
// Warnings enabled by -pedantic. This is magically filled in by TableGen.
def Pedantic : DiagGroup<"pedantic">;
// Aliases.
def : DiagGroup<"", [Extra]>; // -W = -Wextra

Para -Wall mire la mayoría, paréntesis, interruptor. Puedes encontrar:


def Most : DiagGroup<"most", [ 
....

más abajo en el archivo. Del mismo modo, para extra:


def Extra : DiagGroup<"extra", [
MissingFieldInitializers,
IgnoredQualifiers,
InitializerOverrides,
SemiBeforeMethodBody,
MissingMethodReturnType,
SignCompare,
UnusedParameter
]>;

Algunas respuestas de código


def : DiagGroup<"all", [Most, Parentheses, Switch]>;
// Warnings enabled by -pedantic. This is magically filled in by TableGen. def Pedantic : DiagGroup<"pedantic">;
// Aliases. def : DiagGroup<"", [Extra]>;
// -W = -Wextra
def Most : DiagGroup<"most", [  .... 
def Extra : DiagGroup<"extra", [
MissingFieldInitializers,
IgnoredQualifiers,
InitializerOverrides,
SemiBeforeMethodBody,
MissingMethodReturnType,
SignCompare,
UnusedParameter ]>;

No