<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Aug 17, 2011, at 7:06 PM, Eli Friedman wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; ">On Wed, Aug 17, 2011 at 6:12 PM, Ted Kremenek <<a href="mailto:kremenek@apple.com">kremenek@apple.com</a>> wrote:<br><blockquote type="cite">Author: kremenek<br></blockquote><blockquote type="cite">Date: Wed Aug 17 20:12:56 2011<br></blockquote><blockquote type="cite">New Revision: 137910<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">URL:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project?rev=137910&view=rev">http://llvm.org/viewvc/llvm-project?rev=137910&view=rev</a><br></blockquote><blockquote type="cite">Log:<br></blockquote><blockquote type="cite">Implement '-Weverything', which enables all warnings except those explicitly mapped to be ignored.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Currently this includes -pedantic warnings as well; we'll need to consider whether these should<br></blockquote><blockquote type="cite">be included.<br></blockquote><br>This seems like a bad idea: people will start using it, then complain<br>whenever we add a new warning which isn't generically applicable<br>(suppose we add an opt-in warning for C-style casts in C++, for<br>example).  We already have -Wextra for people who want lots of<br>warnings.</span></blockquote></div><br><div>Hi Eli,</div><div><br></div><div>I had such reservations myself initially.  This was actually requested by several users, and I think they presented a compelling usage scenario.</div><div><br></div><div>Without -Weverything, our users have to guess what warning options they need to pass to get the warnings (new and old) that they want.  We add warnings all the time, some which we add to -Wall or -Wextra, and some we don't add to either.  The means the only way to activate a set of warnings is to gradually build the set of warnings up from the baseline set of enabled warnings.  This is reasonable for most users, but not all, especially those who want to always make use of the latest and greatest warnings.  For those users, they will need to manually add an additional -W flag for each opt in warning.  This really sucks for a variety of reasons, with the main one being discoverability of new warnings.  Our documentation on our warnings is essentially non-existent, and even if it was terrific it's still questionable to require users to constantly scour our documentation for the latest and greatest warnings if what they want is to always opt in to the latest set of warnings we add.</div><div><br></div><div>The argument I heard for -Weverything is that instead of starting with a baseline set of enabled warnings, and building that up with extra -W flags, one starts with all warnings enabled, and cherry picks which ones to disable with -Wno-[warning]. Thus the user takes an "opt out" instead of an "opt in" approach.  The real advantage of this approach is that warnings are instantly discoverable.  There is no scouring through docs.  They are all activated.  If the user feels the warning sucks, they turn it off.</div><div><br></div><div>-Weverything is not for everybody, and for those that complain about new warnings we can (and should) tell them to take the opt-in approach as opposed to the opt-out approach.  I don't see a problem with really serving both sets of user preferences.</div><div><br></div><div>Lastly, I think -Weverything is immensely useful from a testing perspective.  Without -Weverything, we don't have a convenient way to activate every warning in the compiler for large scale testing on real code.</div><div><br></div><div><br></div></body></html>