Quali avvisi sono inclusi in Clangs -Wall e -Wextra?

Quali avvisi sono inclusi in Clangs -Wall e -Wextra?


Ho trovato la documentazione di Clang piuttosto scarsa. Non sono stato in grado di trovare gran parte di un elenco di flag di avviso Clang disponibili. Sono particolarmente interessato agli avvisi C/C++, ma questo è un problema un po' generale.


GCC elenca e descrive gli avvisi qui ed elenca anche ciò che è incluso in -Wall e -Wextra:
https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options


Quali flag di avviso sono inclusi in -Wall e -Wextra di Clang?


Posso esaminare le note di rilascio di Clang per ciascuna versione per vedere quali nuovi flag di avviso vengono introdotti ogni volta (ad es. http://llvm.org/releases/3.4/tools/clang/docs/ReleaseNotes.html), ma è esiste un elenco e/o una descrizione più semplice degli avvisi di Clang? Questo sarebbe estremamente utile. Ho bisogno di sapere cosa è incluso in -Wall e cosa no, quindi posso considerare di attivare quelli che non lo sono.


(So ​​che -Weverything esiste per Clang - potrei dover ricorrere all'utilizzo di quello e semplicemente disabilitare esplicitamente quelli che non mi piacciono? Più documentazione lo renderebbe molto più ideale.)


Risposte:


Puoi controllare il codice sorgente:


Ad esempio,


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

Per -Wall guarda Most, Parentesi, Switch. Puoi trovare:


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

più in basso nel file. Allo stesso modo, per extra:


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

Alcune risposte al codice


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