[cfe-dev] -Wunique-enum; is it worth it?
Ted Kremenek
kremenek at apple.com
Wed Sep 12 15:32:50 PDT 2012
Please discuss this on another thread by changing the subject line at least.
On Sep 12, 2012, at 3:29 PM, Richard Trieu <rtrieu at google.com> wrote:
> On Wed, Sep 12, 2012 at 3:07 PM, Sean McBride <sean at rogue-research.com> wrote:
> On Wed, 12 Sep 2012 14:30:32 -0700, Richard Trieu said:
>
> >One way that this may manifest is during
> >testing of enum values:
> >
> >enum Foo { A = 0, B = 0 };
> >Foo f = B;
> >if (f == A)
> > ActOnA(); // Runs since A == B
> >else if (f == B)
> > ActOnB(); // Never runs.
>
> Not to hijack your thread, and I know it's just one example.... but catching 'if' conditions that match previous ones would be valuable whether there are enums involved or not. I filed a PR long ago:
> <http://llvm.org/bugs/show_bug.cgi?id=9193>
>
> This is something PVS Studio can catch! An example I saw the other day:
> Does PVS Studio only catch identical conditional (x == 5 and later x == 5) or can it catch equivalent, but differently coded conditionals (x == 5 then x == 2 + 3)?
>
> ----------------------------------
> V517 The use of 'if (A) {...} else if (A) {...}' pattern was detected. There is a probability of logical error presence. Check lines: 224, 227. lproj lproj.c 224
>
> static void vprocess(FILE *fid) {
> char *s;
> ...
> if (*s == 'I' || *s == 'i') {
> linvers = 1;
> ++s;
> } else if (*s == 'I' || *s == 'i') {
> linvers = 0;
> ++s;
> } else
> ...
> }
> ----------------------------------
>
> Cheers,
>
> --
> ____________________________________________________________
> Sean McBride, B. Eng sean at rogue-research.com
> Rogue Research www.rogue-research.com
> Mac Software Developer Montréal, Québec, Canada
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20120912/38586622/attachment.html>
More information about the cfe-dev
mailing list