I think this convinced me to put the -Weverything in my build flags :) This article provides exactly 1 technical argument to why you would not want it:<p>> every time we upgraded our compiler, we’d have to update our build flags to include a whole slew of additional -Wno-... options.<p>but that's exactly what I want! Our internal app is built with a single compiler version, and upgrading the compiler requires extensive re-testing. One of the cool things about new compiler versions is new warnings it enables, and we definitely want someone to evaluate those. So we have two options:<p>1. Use "-Wall". Every time compiler is upgraded, someone should temporarily build with -Weverything, wade through the tons of false positives and find any interesting warnings, then add them to the build rules. If they forget to do this, there is no way for PR reviewers or other team members to know about it -- we'll silently proceed with potential errors in our codebase, not even knowing about opportunity for improvement.<p>2. Use "-Weveryting -Wno-warn1 -Wno-warn2..". Every time the compiler is upgraded, we get all new warnings which appeared in this compiler version. And a person making compiler upgrade PR must decide which warnings are bad (need to disable warning) and which warnings are good (need to fix the code). And they cannot forget it, they must do it before PR will pass the tests because we always compile with -Wfatal. And other team members and reviewers can see which warnings we are disabling.<p>It looks to me that <i>on the private projects with fixed compiler version</i> the 2nd approach is strictly superiour -- more visibility into disabled warnings, and you cannot forget to check the list. A pity that gcc does not support it.