Messages in this thread Patch in this message | | | Date | Thu, 19 Jun 2014 13:18:37 -0700 | From | Andrew Morton <> | Subject | Re: [PATCH V2] checkpatch: Warn on unnecessary void function return statements |
| |
On Wed, 18 Jun 2014 10:44:44 -0700 Joe Perches <joe@perches.com> 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.
Previous patch is now in mainline, so I did this:
From: Joe Perches <joe@perches.com> Subject: checkpatch: reduce false positives when checking void function return statements
The previous patch had a few too many false positives on styles that should be acceptable.
Signed-off-by: Joe Perches <joe@perches.com> Tested-by: Anish Bhatt <anish@chelsio.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> ---
scripts/checkpatch.pl | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)
diff -puN scripts/checkpatch.pl~checkpatch-reduce-false-positives-when-checking-void-function-return-statements scripts/checkpatch.pl --- a/scripts/checkpatch.pl~checkpatch-reduce-false-positives-when-checking-void-function-return-statements +++ a/scripts/checkpatch.pl @@ -3484,12 +3484,17 @@ sub process { } } -# unnecessary return in a void function? (a single leading tab, then return;) - if ($sline =~ /^\+\treturn\s*;\s*$/ && - $prevline =~ /^\+/) { +# 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" . $herecurr); - } + "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 && _
| |