Messages in this thread | | | Subject | Re: [PATCH v2] checkpatch: add check for continue statement in UNNECESSARY_ELSE | From | Joe Perches <> | Date | Fri, 01 Oct 2021 14:09:18 -0700 |
| |
On Sat, 2021-10-02 at 02:17 +0530, Utkarsh Verma wrote: > UNNECESSARY_ELSE only checks for the usage of else after a return or > break. But the same logic is also true for continue statement. > > else used after a continue statement is unnecessary. So add a test > for continue statement also. [] > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl [] > @@ -4011,15 +4011,15 @@ sub process { > > > # check indentation of any line with a bare else > # (but not if it is a multiple line "if (foo) return bar; else return baz;") > -# if the previous line is a break or return and is indented 1 tab more... > +# if the previous line is a break or continue or return and is indented 1 tab more... > if ($sline =~ /^\+([\t]+)(?:}[ \t]*)?else(?:[ \t]*{)?\s*$/) { > my $tabs = length($1) + 1; > - if ($prevline =~ /^\+\t{$tabs,$tabs}break\b/ || > + if ($prevline =~ /^\+\t{$tabs,$tabs}(?:break|continue)\b/ || > ($prevline =~ /^\+\t{$tabs,$tabs}return\b/ && > defined $lines[$linenr] && > $lines[$linenr] !~ /^[ \+]\t{$tabs,$tabs}return/)) { > WARN("UNNECESSARY_ELSE", > - "else is not generally useful after a break or return\n" . $hereprev); > + "else is not generally useful after a break or continue or return\n" . $hereprev); > } > } > >
Maybe make the output specific to the break/continue/return (untested)
if ($prevline =~ /^\+\t{$tabs,$tabs}(break|continue|return)\b/ && !($1 == "return" && defined $lines[$linenr] && $lines[$linenr] !~ /^[ \+]\t{$tabs,$tabs}return/)) { WARN("UNNECESSARY_ELSE", "else is not generally useful after a $1\n" . $hereprev);
| |