tutorial remix qué para español curso aprender c++ c clang compiler-warnings

c++ - remix - ¿Qué advertencias se incluyen en Clang''s-Wall y-Wextra?



solidity para ethereum (2)

He encontrado que la documentación de Clang es bastante pobre. No he podido encontrar una lista de las banderas de advertencia de Clang disponibles. Me interesan particularmente las advertencias de C / C ++, pero esto es un problema general.

GCC enumera y describe las advertencias aquí, y también enumera lo que se incluye en -Wall y -Wextra: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options

¿Qué banderas de advertencia se incluyen con Clang''s -Wall y -Wextra?

Puedo revisar las notas de la versión de Clang para cada versión para ver qué nuevos avisos de advertencia se introducen cada vez (por ejemplo, http://llvm.org/releases/3.4/tools/clang/docs/ReleaseNotes.html ), pero hay una más fácil ¿Lista y / o descripción de las advertencias de Clang? Esto sería extremadamente útil. Necesito saber qué se incluye en -Wall y qué no, para poder considerar los que no están incluidos.

(Sé que, todo lo que existe para Clang, ¿podría recurrir a usar eso y simplemente deshabilitar a los que no me gustan? Más documentación lo haría mucho más ideal).


Clang solía ser muy malo en documentar lo que estaba disponible. Aunque desde la versión 4.0.0 en adelante, lo han arreglado. Para versiones anteriores se puede probar o consultar el código fuente. En github.com/Barro/compiler-warnings puede encontrar un extracto de las advertencias basadas en el código fuente.

Por lo tanto, puede encontrar la documentación sobre las últimas marcas en las páginas de documentación , así como la documentación correspondiente para un lanzamiento específico en sus páginas de lanzamiento (4.0.0) .

Clang-cl tiene sus propios indicadores de advertencia, los cuales se pueden encontrar en su documentation


Puedes consultar el código fuente :

Por ejemplo,

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

Para -Wall la mayoría, paréntesis, interruptor. Puedes encontrar:

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

más abajo en el archivo. Del mismo modo, por más:

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