6 ms·
Clang (since LLVM version 4.4) has flag -Weverything which really reports everything https://www.bignerdranch.com/blog/a-bit-on-warnings/ https://www.bignerdra
by ishtu 9y ago
Clang (since LLVM version 4.4) has flag -Weverything which really reports everything
https://www.bignerdranch.com/blog/a-bit-on-warnings/ https://www.bignerdranch.com/blog/a-bit-on-warnings/
- cpeterso 9y agoclang doesn't document the full list of warning flags that it supports, but the clang source code has a list, including the hierarchy of meta flags that enable other flags: https://github.com/llvm-mirror/clang/blob/master/include/clang/Basic/DiagnosticGroups.td https://github.com/llvm-mirror/clang/blob/master/include/cla... http://fuckingclangwarnings.com/ http://fuckingclangwarnings.com/ has descriptions of many of the warnings, but more recent warnings aren't covered because the website hasn't been updated since 2014.
- zmodem 9y agoSee https://clang.llvm.org/docs/DiagnosticsReference.html https://clang.llvm.org/docs/DiagnosticsReference.html
- cpeterso 9y agoThank you! I've never seen that page. It doesn't show up when searching for "clang warnings" in DuckDuckGo or Bing, but I see now that it is Google's result #2. I just found a GitHub repo that lists which warning flags are supported by different versions of clang and gcc: https://github.com/Barro/compiler-warnings https://github.com/Barro/compiler-warnings
- jordigh 9y agoI'm not convinced I want Scott Meyers yelling at me with -Weverything as part of -Weffc++. I think I side with the gcc devs here on not having a flag to enable every possible warning ever.
- 2trill2spill 9y agoWhy not have the flag and not use it if you don't want it? That way other users of gcc who want that flag are not deprived of that feature.
- bennofs 9y agoYou can just use `-Weverything -Wno-effc++` then
- spc476 9y agoI found -Weverything seriously annoying. Declare a structure, and clang warns about padding bytes being added. Make it a packed structure, and clang warns about the lack of padding bytes. Useless! Okay, I can see the warning on packed structures, as that's usually a compiler extension, but a plain struct? Seriously?
- 2trill2spill 9y agoThen turn off that warning if you don't like/want it.
- spc476 9y agoThe point is there's a warning either way. Pack the structure, and you get warnings. Don't pack the structure, get warnings. To me, that's being needlessly pedantic.
- userbinator 9y agoThere is also -Wlogical-op-parentheses, which rather condescendingly implies that you don't know the precedence of || vs &&. (The main use of parentheses is specifically to indicate precedence different from the usual, since otherwise they just add noise to the code and reduce clarity.) I half-expect -Warithmetic-op-parentheses or even -Wop-parentheses to show up in some future version of clang... Unfortunately there's no corresponding -Wuseless-parentheses, which if present would truly make -Weverything a "damned if you do, damned if you don't".
- Too 9y agoI think clang added a -Weverything just to prove a point why it's a bad idea to actually contain _all_ warnings in -Wall. As you say, some warnings are contradictory and it's up to the project to decide which one of them is more important.