Какие предупреждения включены в Clang -Wall и -Wextra?

Я обнаружил, что документация Clang довольно плохая. Мне не удалось найти большую часть списка доступных флажков предупреждения Клана. Мне особенно интересны предупреждения 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), но есть ли более простой список и/или описание предупреждений Клана? Это было бы очень полезно. Мне нужно знать, что включено в -Wall, а что нет, поэтому я могу рассмотреть возможность включения тех, которые не являются.

(Я знаю, что - все, что существует для Clang - возможно, мне придется прибегнуть к использованию этого и просто явно отключить те, которые мне не нравятся? Дополнительная документация сделает это намного более идеальным.)

Ответ 1

Вы можете проверить исходный код:

Например,

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
  ]>;

Ответ 2

Раньше Клэнг плохо документировал то, что было доступно. Хотя начиная с версии 4.0.0 они исправили это. Для более старых версий можно попробовать или обратиться к исходному коду. На странице страница компилятора-предупреждений на Github вы можете найти выдержку из предупреждений на основе исходного кода.

Таким образом, вы можете найти документацию по последним флагам на страницах документации, а также соответствующую документацию для конкретной версии на их отпустить страницы (4.0.0).

Clang-cl имеет свои собственные предупреждающие флаги, из которых сопоставление можно найти в документации