Messages in this thread Patch in this message | | | Subject | Re: [PATCH] scripts: checkpatch.pl add warning for dummy label | From | Joe Perches <> | Date | Tue, 09 Sep 2014 08:43:00 -0700 |
| |
On Tue, 2014-09-09 at 15:54 +0200, Nitin Kuppelur wrote: > Added new warning DUMMY_LABEL in checkpatch.pl. This warns > if return statement is encountered just after goto label target > like "out:". In such scenario it is best to call "return;" directly > instead of "goto out;"
I'm not sure this is desired/correct.
There are many functions written like:
return_type foo(...) { [some initialization...]
err = some_test(...); if (err) goto out;
[...]
out: [some cleanup...] return err; }
In many cases, a void function is a simple variant of a non-void function and many people like to see the same code "shape" in functions, just without the init and cleanup bits.
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl [] > @@ -3798,10 +3798,14 @@ sub process { > 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); > + $lines[$linenr - 3] =~ /^[ +]/) { > + if ($lines[$linenr - 3] !~ /^[ +]\s*$Ident\s*:/) { > + WARN("RETURN_VOID", > + "void function return statements are not generally useful\n" . $hereprev); > + } elsif ($lines[$linenr - 3] =~ /^[ +]\s*$Ident\s*:/) { > + WARN("DUMMY_LABEL", > + "labels doing nothing are not generally useful\n" . $hereprev); > + } > } > > # if statements using unnecessary parentheses - ie: if ((foo == bar))
| |