On Fri, 2020-04-10 at 12:46 -0700, Joe Perches wrote:
On Fri, 2020-04-10 at 19:35 +0200, Christophe JAILLET wrote:So on top of the original patch:
Le 08/04/2020 Ã 04:14, Joe Perches a Ãcrit :[]
This works rather better:
Perhaps you could test?
I'm looking at some modification done in the last month that could haveIt has to do with checkpatch's single statement parsing.
been spotted by the above script.
./scripts/checkpatch.pl -f drivers/usb/phy/phy-jz4770.c
correctly spots the 3 first cases, but the 3 last (line 202, 210 and
217) are missed.
I don't understand why.
This case:
if (foo)
dev_warn(...);
is parsed as a single statement but
if (foo) {
dev_warn(...);
};
is parsed as multiple statements so for the
second case
dev_warn(...);
is analyzed as a separate statement.
The regex match for this missing newline test expects
that each printk is a separate statement so the first
case doesn't match.
Clearly the regex can be improved here.
---
scripts/checkpatch.pl | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index f00a6c8..54eaa7 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -5675,8 +5675,8 @@ sub process {
# check for possible missing newlines at the end of common logging functions
if (defined($stat) &&
- $stat =~ /^\+\s*($logFunctions)\s*\((?:\s*$FuncArg\s*,\s*){0,3}\s*$String/ &&
- $1 !~ /_cont$/ && $1 =~ /^(?:pr|dev|netdev|netif|wiphy)_/) {
+ $stat =~ /^\+\s*(?:if\s*$balanced_parens\s*)?($logFunctions)\s*\((?:\s*$FuncArg\s*,\s*){0,3}\s*$String/ &&
+ $2 !~ /_cont$/ && $2 =~ /^(?:pr|dev|netdev|netif|wiphy)_/) {
my $cnt = statement_rawlines($stat);
my $extracted_string = "";
for (my $i = 0; $i < $cnt; $i++) {