diff options
| author | Andy Whitcroft <apw@shadowen.org> | 2008-04-29 03:59:33 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-29 11:06:05 -0400 |
| commit | 9c9ba34ee3dbc34e829f42e42a5e5273b1183500 (patch) | |
| tree | 852a974821beaf9dce3b69610610ecdb9ad36696 /scripts | |
| parent | 171ae1a491e216ef728436f9cc958e05cccf5a27 (diff) | |
update checkpatch.pl to version 0.18
This version brings a few fixes for the extern checks, and a couple of
new checks.
Of note:
- false is now recognised as a 0 assignment in static/external
assignments,
- printf format strings including %L are reported,
- a number of fixes for the extern in .c file detector which had
temporarily lost its ability to detect variables; undetected due to
the loss of its test.
Andy Whitcroft (8):
Version: 0.18
false should trip 0 assignment checks
tests: reinstate missing tests
tests: allow specification of the file extension for a test
fix extern checks for variables
check for and report %Lu, %Ld, and %Li
ensure we only start a statement on lines with some content
extern spacing
Signed-off-by: Andy Whitcroft <apw@shadowen.org>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/checkpatch.pl | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index fd21b5eaed3f..b6bbbcdc557e 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl | |||
| @@ -9,7 +9,7 @@ use strict; | |||
| 9 | my $P = $0; | 9 | my $P = $0; |
| 10 | $P =~ s@.*/@@g; | 10 | $P =~ s@.*/@@g; |
| 11 | 11 | ||
| 12 | my $V = '0.17'; | 12 | my $V = '0.18'; |
| 13 | 13 | ||
| 14 | use Getopt::Long qw(:config no_auto_abbrev); | 14 | use Getopt::Long qw(:config no_auto_abbrev); |
| 15 | 15 | ||
| @@ -1144,7 +1144,7 @@ sub process { | |||
| 1144 | 1144 | ||
| 1145 | # Check for potential 'bare' types | 1145 | # Check for potential 'bare' types |
| 1146 | my ($stat, $cond); | 1146 | my ($stat, $cond); |
| 1147 | if ($realcnt) { | 1147 | if ($realcnt && $line =~ /.\s*\S/) { |
| 1148 | ($stat, $cond) = ctx_statement_block($linenr, | 1148 | ($stat, $cond) = ctx_statement_block($linenr, |
| 1149 | $realcnt, 0); | 1149 | $realcnt, 0); |
| 1150 | $stat =~ s/\n./\n /g; | 1150 | $stat =~ s/\n./\n /g; |
| @@ -1316,12 +1316,12 @@ sub process { | |||
| 1316 | } | 1316 | } |
| 1317 | 1317 | ||
| 1318 | # check for external initialisers. | 1318 | # check for external initialisers. |
| 1319 | if ($line =~ /^.$Type\s*$Ident\s*=\s*(0|NULL);/) { | 1319 | if ($line =~ /^.$Type\s*$Ident\s*=\s*(0|NULL|false)\s*;/) { |
| 1320 | ERROR("do not initialise externals to 0 or NULL\n" . | 1320 | ERROR("do not initialise externals to 0 or NULL\n" . |
| 1321 | $herecurr); | 1321 | $herecurr); |
| 1322 | } | 1322 | } |
| 1323 | # check for static initialisers. | 1323 | # check for static initialisers. |
| 1324 | if ($line =~ /\s*static\s.*=\s*(0|NULL);/) { | 1324 | if ($line =~ /\s*static\s.*=\s*(0|NULL|false)\s*;/) { |
| 1325 | ERROR("do not initialise statics to 0 or NULL\n" . | 1325 | ERROR("do not initialise statics to 0 or NULL\n" . |
| 1326 | $herecurr); | 1326 | $herecurr); |
| 1327 | } | 1327 | } |
| @@ -1973,7 +1973,7 @@ sub process { | |||
| 1973 | 1973 | ||
| 1974 | # check for new externs in .c files. | 1974 | # check for new externs in .c files. |
| 1975 | if ($realfile =~ /\.c$/ && defined $stat && | 1975 | if ($realfile =~ /\.c$/ && defined $stat && |
| 1976 | $stat =~ /^.(?:extern\s+)?$Type\s+$Ident(\s*)\(/s) | 1976 | $stat =~ /^.\s*(?:extern\s+)?$Type\s+$Ident(\s*)\(/s) |
| 1977 | { | 1977 | { |
| 1978 | my $paren_space = $1; | 1978 | my $paren_space = $1; |
| 1979 | 1979 | ||
| @@ -1988,6 +1988,11 @@ sub process { | |||
| 1988 | if ($paren_space =~ /\n/) { | 1988 | if ($paren_space =~ /\n/) { |
| 1989 | WARN("arguments for function declarations should follow identifier\n" . $herecurr); | 1989 | WARN("arguments for function declarations should follow identifier\n" . $herecurr); |
| 1990 | } | 1990 | } |
| 1991 | |||
| 1992 | } elsif ($realfile =~ /\.c$/ && defined $stat && | ||
| 1993 | $stat =~ /^.\s*extern\s+/) | ||
| 1994 | { | ||
| 1995 | WARN("externs should be avoided in .c files\n" . $herecurr); | ||
| 1991 | } | 1996 | } |
| 1992 | 1997 | ||
| 1993 | # checks for new __setup's | 1998 | # checks for new __setup's |
| @@ -2033,6 +2038,16 @@ sub process { | |||
| 2033 | { | 2038 | { |
| 2034 | WARN("usage of NR_CPUS is often wrong - consider using cpu_possible(), num_possible_cpus(), for_each_possible_cpu(), etc\n" . $herecurr); | 2039 | WARN("usage of NR_CPUS is often wrong - consider using cpu_possible(), num_possible_cpus(), for_each_possible_cpu(), etc\n" . $herecurr); |
| 2035 | } | 2040 | } |
| 2041 | |||
| 2042 | # check for %L{u,d,i} in strings | ||
| 2043 | my $string; | ||
| 2044 | while ($line =~ /(?:^|")([X\t]*)(?:"|$)/g) { | ||
| 2045 | $string = substr($rawline, $-[1], $+[1] - $-[1]); | ||
| 2046 | if ($string =~ /(?<!%)%L[udi]/) { | ||
| 2047 | WARN("\%Ld/%Lu are not-standard C, use %lld/%llu\n" . $herecurr); | ||
| 2048 | last; | ||
| 2049 | } | ||
| 2050 | } | ||
| 2036 | } | 2051 | } |
| 2037 | 2052 | ||
| 2038 | # If we have no input at all, then there is nothing to report on | 2053 | # If we have no input at all, then there is nothing to report on |
