[cfe-commits] [Patch] Checker for assignment of non-Boolean value to Boolean variable

David Blaikie dblaikie at gmail.com
Thu Dec 8 18:23:36 PST 2011


On Thu, Dec 8, 2011 at 6:03 PM, Eli Friedman <eli.friedman at gmail.com> wrote:
> On Wed, Dec 7, 2011 at 5:53 PM, Ryan Govostes <rzg at apple.com> wrote:
>> Hello,
>>
>> Please find attached a new checker for the static analyzer that warns on the assignment of a non-Boolean value to a variable with a Boolean data type. It supports Boolean data types defined by C++, C99, and Objective-C as well as those in stdbool.h and MacTypes.h.
>
> Some related work:
>
> http://blog.mozilla.com/mwu/2011/07/28/the-twelve-booleans-of-mozilla/

Awesome.

Yeah - now I understand the problem, I wonder again if this could be
implemented (in a simpler but more strict manner) as a front-end
warning in the same way that null-conversions are warned about (though
it'd have to be a bit smarter - perhaps detecting the macro/typedef
that was used to declare a variable or assign a constant to it - not
to mention that the current Clang null-conversion support is broken
(I've another thread pending some discussion on that)). But in general
this should be good for any >2 state value masquerading as an int -
for C++ bool or anything that's as good as it, a lesser warning (if
any at all) might be appropriate.

The usual warning with Win32 BOOL is to never mix BOOL & bool - but
with this kind of warning/checking you could be confident that BOOL is
only 0 or 1 and so "someBOOL == some_bool" would work sensibly (&
never be "2 == 1" => false, for example)

- David




More information about the cfe-commits mailing list