Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1423270AbbEENET (ORCPT ); Tue, 5 May 2015 09:04:19 -0400 Received: from hofr.at ([212.69.189.236]:47784 "EHLO mail.hofr.at" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1423254AbbEENEH (ORCPT ); Tue, 5 May 2015 09:04:07 -0400 Date: Tue, 5 May 2015 15:04:05 +0200 From: Nicholas Mc Guire To: SF Markus Elfring Cc: Nicholas Mc Guire , cocci@systeme.lip6.fr, linux-kernel@vger.kernel.org Subject: Re: [PATCH RFC] Coccinelle: Check for return not matching function signature Message-ID: <20150505130405.GA1956@opentech.at> References: <1430820761-28122-1-git-send-email-hofrat@osadl.org> <5548B87B.4060103@users.sourceforge.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5548B87B.4060103@users.sourceforge.net> User-Agent: Mutt/1.5.18 (2008-05-17) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1760 Lines: 63 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/