Quels sont les avertissements de Clang's-Wall et-Wextra?

J'ai trouvé la documentation de Clang assez pauvre. Je n'ai pas pu trouver beaucoup d'une liste de drapeaux D'avertissement de cliquetis disponibles. Je m'intéresse particulièrement aux avertissements C / C++, mais c'est un peu un problème général.

GCC liste et décrit les Avertissements ici, ainsi que ce qui est inclus dans-Wall et-Wextra: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options

quel avertissement les drapeaux sont inclus avec Clang's-Wall et-Wextra?

je peux parcourir les notes de version de Clang pour chaque version pour voir quels nouveaux signaux d'avertissement sont introduits à chaque fois (par exemple http://llvm.org/releases/3.4/tools/clang/docs/ReleaseNotes.html ), mais existe-t-il une liste et/ou une description plus facile des avertissements de Clang? Ce serait extrêmement utile. J'ai besoin de savoir ce qui est inclus dans le mur et ce qui ne l'est pas, pour que je puisse penser à activer ceux qui ne le sont pas.

(je sais que c'-Weverything existe pour Clang - pourrais-je avoir recours à l'aide de cela, et explicitement la désactivation de ceux que je n'aime pas? Plus de documentation rendrait cela beaucoup plus idéal.)

17
demandé sur Jetski S-type 2014-07-23 11:18:31

2 réponses

vous pouvez vérifier le code source :

par exemple,

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

Pour -Wall regardez la Plupart, entre Parenthèses, de l'Interrupteur. Vous pouvez trouver:

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

plus loin dans le dossier. De même, pour extra:

def Extra : DiagGroup<"extra", [
    MissingFieldInitializers,
    IgnoredQualifiers,
    InitializerOverrides,
    SemiBeforeMethodBody,
    MissingMethodReturnType,
    SignCompare,
    UnusedParameter
  ]>;
10
répondu perreal 2014-07-23 07:45:58

Clang était très mauvais pour documenter ce qui était disponible. Mais à partir de la version 4.0.0, ils ont fixé. Pour les versions plus anciennes, on peut essayer ou consulter le code source. À la page compilateur-avertissements sur Github vous pouvez trouver un extrait des avertissements basés sur le code source.

ainsi vous pouvez trouver la documentation sur les derniers drapeaux à les pages de documentation , ainsi que la documentation correspondante pour une version spécifique à leurs pages de version (4.0.0) .

Clang-cl dispose de ses propres signaux d'avertissement, dont la cartographie se trouve sur sa documentation

3
répondu JVApen 2017-06-11 11:12:07