Messages in this thread Patch in this message | | | Subject | [PATCH] checkpatch: Add test for comma use that should be semicolon | From | Joe Perches <> | Date | Wed, 19 Aug 2020 14:22:10 -0700 |
| |
There are commas used as statement terminations that should typically have used semicolons instead. Only direct assignments or use of a single function or value on a single line are detected by this test.
e.g.: foo = bar(), /* typical use is semicolon not comma */ bar = baz();
Add an imperfect test to detect these comma uses.
No false positives were found in testing, but many types of false negatives are possible.
e.g.: foo = bar() + 1, /* comma use, but not direct assignment */ bar = baz();
Signed-off-by: Joe Perches <joe@perches.com --- scripts/checkpatch.pl | 11 +++++++++++ 1 file changed, 11 insertions(+)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl= index 60d4a79674b6..93b99809df07 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -4936,6 +4936,17 @@ sub process { } } +# check if a statement with a comma should be two statements like: +# foo = bar(), /* comma should be semicolon */ +# bar = baz(); + if (defined($stat) && + $stat =~ /^\+\s*(?:$Lval\s*$Assignment\s*)?$FuncArg\s*,\s*(?:$Lval\s*$Assignment\s*)?$FuncArg\s*;\s*$/) { + my $cnt = statement_rawlines($stat); + my $herectx = get_stat_here($linenr, $cnt, $here); + WARN("SUSPECT_COMMA_SEMICOLON", + "Possible comma where semicolon could be used\n" . $herectx); + } + # return is not a function if (defined($stat) && $stat =~ /^.\s*return(\s*)\(/s) { my $spacing = $1;
| |