All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anish Bhatt <anish@chelsio.com>
To: Joe Perches <joe@perches.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH V2] checkpatch: Warn on unnecessary void function return statements
Date: Wed, 18 Jun 2014 12:59:09 -0700	[thread overview]
Message-ID: <53A1EF8D.20300@chelsio.com> (raw)
In-Reply-To: <1403113484.3839.13.camel@joe-AO725>

On Wed 18 Jun 2014 10:44:44 AM PDT, Joe Perches wrote:
> With some exceptions, warn on void functions that end with a
> "return;", because it's unnecessary.
>
> Check the closing brace at the start of a line.
> If the line before that has a single tab, then return;
> look at the line before that.  If it's not a label,
> emit a warning.
>
> So, emit a warning on:
>
> void function(...)
> {
> 	[...]
> 	return;
> }
>
> but do not emit a warning on the below because
> gcc requires any statement (including a bare
> semicolon) before the closing function brace:
>
> void function(...)
> {
> 	[...]
> 		goto label;
> 	[...]
>
> label:
> 	return;
> }
>
> Signed-off-by: Joe Perches <joe@perches.com>
> ---
>
> V2: The previous patch had a few too many false positives
>     on styles that should be acceptable.
>
>  scripts/checkpatch.pl | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
>
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 862cc7a..b191c88 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -3470,6 +3470,18 @@ sub process {
>  			}
>  		}
>
> +# unnecessary return in a void function
> +# at end-of-function, with the previous line a single leading tab, then return;
> +# and the line before that not a goto label target like "out:"
> +		if ($sline =~ /^[ \+]}\s*$/ &&
> +		    $prevline =~ /^\+\treturn\s*;\s*$/ &&
> +		    $linenr >= 3 &&
> +		    $lines[$linenr - 3] =~ /^[ +]/ &&
> +		    $lines[$linenr - 3] !~ /^[ +]\s*$Ident\s*:/) {
> +			WARN("RETURN_VOID",
> +			     "void function return statements are not generally useful\n" . $hereprev);
> +               }
> +
>  # if statements using unnecessary parentheses - ie: if ((foo == bar))
>  		if ($^V && $^V ge 5.10.0 &&
>  		    $line =~ /\bif\s*((?:\(\s*){2,})/) {
>
>

Confirming, no longer hitting previous false positives for me.
-Anish

--
As long as the music's loud enough, we won't hear the world falling 
apart.


  reply	other threads:[~2014-06-18 19:59 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-02 16:58 [PATCH] checkpatch: Warn on unnecessary void function return statements Joe Perches
2014-06-16 23:28 ` Anish Bhatt
2014-06-17  0:28   ` Joe Perches
2014-06-17  0:44     ` Anish Bhatt
2014-06-17  2:00       ` Joe Perches
2014-06-17  3:16         ` Sachin Kamat
2014-06-17  3:25           ` Joe Perches
2014-06-17  3:35             ` Sachin Kamat
2014-06-17 19:37         ` Anish Bhatt
2014-06-18 17:44 ` [PATCH V2] " Joe Perches
2014-06-18 19:59   ` Anish Bhatt [this message]
2014-06-19 20:18   ` Andrew Morton
2014-06-19 20:28     ` Joe Perches

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53A1EF8D.20300@chelsio.com \
    --to=anish@chelsio.com \
    --cc=akpm@linux-foundation.org \
    --cc=joe@perches.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.