Messages in this thread Patch in this message | | | Date | Tue, 29 Apr 2008 00:10:03 +0200 (CEST) | From | Jan Engelhardt <> | Subject | Re:+patch Why these dot chars in scripts/checkpatch.pl? |
| |
On Monday 2008-04-28 22:47, Rogan Dawes wrote: > Paul Jackson wrote: >> Andy, >> >> Perhaps I'm loosing my magic regex pixie dust, but the dot '.' char >> in the pattern "/^.#" in the following lines looks wrong to me, as if >> one were trying to match pre-processor directives that were set in by >> one character: > > Perhaps it is because checkpatch.pl is supposed to check *patches*, which are > typically indented by one character (+- )?
Even so, the regexes are not entirely accurate. Patch below.
=== commit e08a94e334d67ac5f2437c8aba4c6ffbb058d7db Author: Jan Engelhardt <jengelh@medozas.de> Date: Tue Apr 29 00:06:42 2008 +0200
checkpatch: fix recognition of preprocessor directives
Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 58a9494..22df611 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -355,12 +355,12 @@ sub sanitise_line { } # The pathname on a #include may be surrounded by '<' and '>'. - if ($res =~ /^.#\s*include\s+\<(.*)\>/) { + if ($res =~ /^.\s*#\s*include\s+\<(.*)\>/) { my $clean = 'X' x length($1); $res =~ s@\<.*\>@<$clean>@; # The whole of a #error is a string. - } elsif ($res =~ /^.#\s*(?:error|warning)\s+(.*)\b/) { + } elsif ($res =~ /^.\s*#\s*(?:error|warning)\s+(.*)\b/) { my $clean = 'X' x length($1); $res =~ s@(#\s*(?:error|warning)\s+).*@$1$clean@; } @@ -1194,7 +1194,7 @@ sub process { # if/while/etc brace do not go on next line, unless defining a do while loop, # or if that brace on the next line is for something else - if ($line =~ /(.*)\b((?:if|while|for|switch)\s*\(|do\b|else\b)/ && $line !~ /^.#/) { + if ($line =~ /(.*)\b((?:if|while|for|switch)\s*\(|do\b|else\b)/ && $line !~ /^.\s*#/) { my $pre_ctx = "$1$2"; my ($level, @ctx) = ctx_statement_level($linenr, $realcnt, 0); @@ -1877,7 +1877,7 @@ sub process { } # warn about #if 0 - if ($line =~ /^.#\s*if\s+0\b/) { + if ($line =~ /^.\s*#\s*if\s+0\b/) { CHK("if this code is redundant consider removing it\n" . $herecurr); } @@ -1891,14 +1891,14 @@ sub process { } # warn about #ifdefs in C files -# if ($line =~ /^.#\s*if(|n)def/ && ($realfile =~ /\.c$/)) { +# if ($line =~ /^.\s*#\s*if(|n)def/ && ($realfile =~ /\.c$/)) { # print "#ifdef in C files should be avoided\n"; # print "$herecurr"; # $clean = 0; # } # warn about spacing in #ifdefs - if ($line =~ /^.#\s*(ifdef|ifndef|elif)\s\s+/) { + if ($line =~ /^.\s*#\s*(ifdef|ifndef|elif)\s\s+/) { ERROR("exactly one space required after that #$1\n" . $herecurr); } @@ -1972,7 +1972,7 @@ sub process { # use of NR_CPUS is usually wrong # ignore definitions of NR_CPUS and usage to define arrays as likely right if ($line =~ /\bNR_CPUS\b/ && - $line !~ /^.#\s*define\s+NR_CPUS\s+/ && + $line !~ /^.\s*#\s*define\s+NR_CPUS\s+/ && $line !~ /^.\s*$Declare\s.*\[[^\]]*NR_CPUS[^\]]*\]/) { WARN("usage of NR_CPUS is often wrong - consider using cpu_possible(), num_possible_cpus(), for_each_possible_cpu(), etc\n" . $herecurr);
| |