Clangs -Wall および -Wextra にはどのような警告が含まれていますか?



私は、Clang のドキュメントが非常に貧弱であることを発見しました。利用可能な Clang 警告フラグのリストの多くを見つけることができませんでした。特に C/C++ の警告に関心がありますが、これは一般的な問題です。


GCC はここに警告をリストして説明し、-Wall と -Wextra に含まれるものもリストします:
https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options


Clang の -Wall と -Wextra にはどのような警告フラグが含まれていますか?


各バージョンの Clang リリース ノートを調べて、毎回どのような新しい警告フラグが導入されているかを確認できます (例:http://llvm.org/releases/3.4/tools/clang/docs/ReleaseNotes.html) が、 はClang の警告の簡単なリストや説明はありますか? これは非常に便利です。 -Wall に何が含まれていて、何が含まれていないかを知る必要があるため、含まれていないものをオンにすることを検討できます。


(Clang にはすべてのものが存在することはわかっています。それを使用して、気に入らないものを明示的に無効にする必要があるのではないでしょうか?ドキュメントが増えると、これがより理想的になります。)


答え:


ソースコードを確認できます:


たとえば、


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

-Wall の場合 ほとんど、括弧、スイッチを見てください。以下を見つけることができます:


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

ファイルのさらに下。同様に、追加の場合:


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

いくつかのコードの回答


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