Welche Warnhinweise sind in Clangs -Wall und -Wextra enthalten?

Welche Warnhinweise sind in Clangs -Wall und -Wextra enthalten?


Ich fand Clangs Dokumentation ziemlich dürftig. Ich konnte nicht viel von einer Liste der verfügbaren Clang-Warnflaggen finden. Ich interessiere mich besonders für C/C++-Warnungen, aber das ist eher ein allgemeines Problem.


GCC listet und beschreibt hier Warnungen und listet auch auf, was in -Wall und -Wextra enthalten ist:
https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options


Welche Warnhinweise sind in Clangs -Wall und -Wextra enthalten?


Ich kann die Clang-Versionshinweise für jede Version durchsuchen, um zu sehen, welche neuen Warnmarkierungen jedes Mal eingeführt werden (z. B. http://llvm.org/releases/3.4/tools/clang/docs/ReleaseNotes.html), aber ist Gibt es eine einfachere Liste und/oder Beschreibung von Clangs Warnungen? Dies wäre äußerst nützlich. Ich muss wissen, was in -Wall enthalten ist und was nicht, damit ich erwägen kann, diejenigen zu aktivieren, die es nicht sind.


(Ich weiß, dass – für Clang gibt es alles – muss ich vielleicht darauf zurückgreifen und einfach diejenigen explizit deaktivieren, die ich nicht mag? Mehr Dokumentation würde dies viel idealer machen.)


Antworten:


Sie können den Quellcode überprüfen:


Zum Beispiel


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

Für -Wall Schauen Sie sich die meisten, Klammern, Schalter an. Sie finden:


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

weiter unten in der Datei. Ebenso für extra:


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

Einige Code-Antworten


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