Re: [PATCH RFC] Coccinelle: Check for return not matching function signature

From: Nicholas Mc Guire
Date: Tue May 05 2015 - 09:04:23 EST


On Tue, 05 May 2015, SF Markus Elfring wrote:

> > Check if the signature of a function and the return value type match.
>
> Is this a task that is usually performed by a compiler?
>
>
> > In many cases this mismatch will have no side-effects
> > but in some cases it may lead to hard to locate problems
>
> It is another software development challenge to find concrete
> open issues there.
>
>
> > - and for readability and code understanding it is also helpful
> > when types match.
>
> How would you like to check for compatible data types here?
>

coccinelle knows the type so all you need to do is comare them in
phython .

>
> > The output is a bit lengthy - not sure if that is too much
> > but it seemed useful to me to see the non-matching types explicitly
> > in the warning message.
>
> How do you think about to import the result list into a database table?
>

working on that "re-cycling" your parameter count example
top 10:
488 ssize_t != int
195 int != unsigned int
183 long != int
113 int != u32
55 int != unsigned long
48 int != u8
45 int != u16
44 unsigned int != int
37 int != s32
30 int != long


>
> > +if T1 != T2:
> > + print "%s:%s,%s WARNING: return of wrong type (%s != %s)" % (p[0].file,fn,p[0].line,T1,T2)
>
> Is such a check a bit too simple?
>
Nop - why ?
Cocci "knwow" C so the assignment of types is reliable -
flaging a s32 != int is fine with respect to readability
even if they are technically the same.

thx!
hofrat
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/