X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=tools%2Fscripts%2Fcheckpatch.pl;h=9cae83aeeea4b7955ca22884c16a05998c37cf08;hp=1089c5113446afcb18e2fb27ae1ade4e6c7a0cbc;hb=c5d89883165e02ea4f318e3cb0ba40d1fb6f04d1;hpb=164450a01576cfe3b003fdf1b6c80e6f228bfb5d diff --git a/tools/scripts/checkpatch.pl b/tools/scripts/checkpatch.pl index 1089c51134..9cae83aeee 100755 --- a/tools/scripts/checkpatch.pl +++ b/tools/scripts/checkpatch.pl @@ -43,7 +43,7 @@ Version: $V Options: -q, --quiet quiet - --no-tree run without a kernel tree + --no-tree run without a openocd tree --no-signoff do not check for 'Signed-off-by' line --patch treat FILE as patchfile (default) --emacs emacs compile window format @@ -52,7 +52,7 @@ Options: --subjective, --strict enable more subjective tests --ignore TYPE(,TYPE2...) ignore various comma separated message types --show-types show the message "types" in the output - --root=PATH PATH to the kernel tree root + --root=PATH PATH to the openocd tree root --no-summary suppress the per-file summary --mailback only produce a report in case of warnings/errors --summary-file include the filename in summary @@ -165,14 +165,14 @@ if ($tree) { } else { if (top_of_kernel_tree('.')) { $root = '.'; - } elsif ($0 =~ m@(.*)/scripts/[^/]*$@ && + } elsif ($0 =~ m@(.*)/tools/scripts/[^/]*$@ && top_of_kernel_tree($1)) { $root = $1; } } if (!defined $root) { - print "Must be run from the top-level dir. of a kernel tree\n"; + print "Must be run from the top-level dir. of a openocd tree\n"; exit(2); } } @@ -261,7 +261,8 @@ our $logFunctions = qr{(?x: [a-z0-9]+_(?:printk|emerg|alert|crit|err|warning|warn|notice|info|debug|dbg|vdbg|devel|cont|WARN)(?:_ratelimited|_once|)| WARN(?:_RATELIMIT|_ONCE|)| panic| - MODULE_[A-Z_]+ + MODULE_[A-Z_]+| + LOG_(?:DEBUG|INFO|WARNING|ERROR|USER|USER_N|OUTPUT)+ )}; our $signature_tags = qr{(?xi: @@ -400,9 +401,8 @@ sub top_of_kernel_tree { my ($root) = @_; my @tree_check = ( - "COPYING", "CREDITS", "Kbuild", "MAINTAINERS", "Makefile", - "README", "Documentation", "arch", "include", "drivers", - "fs", "init", "ipc", "kernel", "lib", "scripts", + "AUTHORS", "BUGS", "COPYING", "HACKING", "Makefile.am", + "README", "contrib", "doc", "src", "tcl", "testing", "tools", ); foreach my $check (@tree_check) { @@ -445,6 +445,8 @@ sub parse_email { $address = ""; $comment = ""; } + } elsif ($formatted_email eq "jenkins") { + $address = "jenkins" } $name =~ s/^\s+|\s+$//g; @@ -1664,15 +1666,15 @@ sub process { # check we are in a valid source file if not then ignore this hunk next if ($realfile !~ /\.(h|c|s|S|pl|sh)$/); -#100 column limit +#120 column limit if ($line =~ /^\+/ && $prevrawline !~ /\/\*\*/ && $rawline !~ /^.\s*\*\s*\@$Ident\s/ && !($line =~ /^\+\s*$logFunctions\s*\(\s*(?:(KERN_\S+\s*|[^"]*))?"[X\t]*"\s*(?:|,|\)\s*;)\s*$/ || $line =~ /^\+\s*"[^"]*"\s*(?:\s*|,|\)\s*;)\s*$/) && - $length > 100) + $length > 120) { WARN("LONG_LINE", - "line over 100 characters\n" . $herecurr); + "line over 120 characters\n" . $herecurr); } # check for spaces before a quoted newline @@ -1721,6 +1723,9 @@ sub process { "please, no space before tabs\n" . $herevet); } +# check we are in a valid C source file if not then ignore this hunk + next if ($realfile !~ /\.(h|c)$/); + # check for spaces at the beginning of a line. # Exceptions: # 1) within comments @@ -1732,9 +1737,6 @@ sub process { "please, no spaces at the start of a line\n" . $herevet); } -# check we are in a valid C source file if not then ignore this hunk - next if ($realfile !~ /\.(h|c)$/); - # check for RCS/CVS revision markers if ($rawline =~ /^\+.*\$(Revision|Log|Id)(?:\$|)/) { WARN("CVS_KEYWORD", @@ -1823,26 +1825,26 @@ sub process { # Check for switch () and associated case and default # statements should be at the same indent. - if ($line=~/\bswitch\s*\(.*\)/) { - my $err = ''; - my $sep = ''; - my @ctx = ctx_block_outer($linenr, $realcnt); - shift(@ctx); - for my $ctx (@ctx) { - my ($clen, $cindent) = line_stats($ctx); - if ($ctx =~ /^\+\s*(case\s+|default:)/ && - $indent != $cindent) { - $err .= "$sep$ctx\n"; - $sep = ''; - } else { - $sep = "[...]\n"; - } - } - if ($err ne '') { - ERROR("SWITCH_CASE_INDENT_LEVEL", - "switch and case should be at the same indent\n$hereline$err"); - } - } +# if ($line=~/\bswitch\s*\(.*\)/) { +# my $err = ''; +# my $sep = ''; +# my @ctx = ctx_block_outer($linenr, $realcnt); +# shift(@ctx); +# for my $ctx (@ctx) { +# my ($clen, $cindent) = line_stats($ctx); +# if ($ctx =~ /^\+\s*(case\s+|default:)/ && +# $indent != $cindent) { +# $err .= "$sep$ctx\n"; +# $sep = ''; +# } else { +# $sep = "[...]\n"; +# } +# } +# if ($err ne '') { +# ERROR("SWITCH_CASE_INDENT_LEVEL", +# "switch and case should be at the same indent\n$hereline$err"); +# } +# } # 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 @@ -1965,7 +1967,7 @@ sub process { #print "line<$line> prevline<$prevline> indent<$indent> sindent<$sindent> check<$check> continuation<$continuation> s<$s> cond_lines<$cond_lines> stat_real<$stat_real> stat<$stat>\n"; - if ($check && (($sindent % 8) != 0 || + if ($check && (($sindent % 4) != 0 || ($sindent <= $indent && $s ne ''))) { WARN("SUSPECT_CODE_INDENT", "suspect code indent for conditional statements ($indent, $sindent)\n" . $herecurr . "$stat_real\n"); @@ -2121,14 +2123,14 @@ sub process { # check for new typedefs, only function parameters and sparse annotations # make sense. - if ($line =~ /\btypedef\s/ && - $line !~ /\btypedef\s+$Type\s*\(\s*\*?$Ident\s*\)\s*\(/ && - $line !~ /\btypedef\s+$Type\s+$Ident\s*\(/ && - $line !~ /\b$typeTypedefs\b/ && - $line !~ /\b__bitwise(?:__|)\b/) { - WARN("NEW_TYPEDEFS", - "do not add new typedefs\n" . $herecurr); - } +# if ($line =~ /\btypedef\s/ && +# $line !~ /\btypedef\s+$Type\s*\(\s*\*?$Ident\s*\)\s*\(/ && +# $line !~ /\btypedef\s+$Type\s+$Ident\s*\(/ && +# $line !~ /\b$typeTypedefs\b/ && +# $line !~ /\b__bitwise(?:__|)\b/) { +# WARN("NEW_TYPEDEFS", +# "do not add new typedefs\n" . $herecurr); +# } # * goes on variable not on type # (char*[ const]) @@ -2961,11 +2963,11 @@ sub process { } # no volatiles please - my $asm_volatile = qr{\b(__asm__|asm)\s+(__volatile__|volatile)\b}; - if ($line =~ /\bvolatile\b/ && $line !~ /$asm_volatile/) { - WARN("VOLATILE", - "Use of volatile is usually wrong: see Documentation/volatile-considered-harmful.txt\n" . $herecurr); - } +# my $asm_volatile = qr{\b(__asm__|asm)\s+(__volatile__|volatile)\b}; +# if ($line =~ /\bvolatile\b/ && $line !~ /$asm_volatile/) { +# WARN("VOLATILE", +# "Use of volatile is usually wrong: see Documentation/volatile-considered-harmful.txt\n" . $herecurr); +# } # warn about #if 0 if ($line =~ /^.\s*\#\s*if\s+0\b/) { @@ -3064,16 +3066,16 @@ sub process { } # Check for __attribute__ packed, prefer __packed - if ($line =~ /\b__attribute__\s*\(\s*\(.*\bpacked\b/) { - WARN("PREFER_PACKED", - "__packed is preferred over __attribute__((packed))\n" . $herecurr); - } +# if ($line =~ /\b__attribute__\s*\(\s*\(.*\bpacked\b/) { +# WARN("PREFER_PACKED", +# "__packed is preferred over __attribute__((packed))\n" . $herecurr); +# } # Check for __attribute__ aligned, prefer __aligned - if ($line =~ /\b__attribute__\s*\(\s*\(.*aligned/) { - WARN("PREFER_ALIGNED", - "__aligned(size) is preferred over __attribute__((aligned(size)))\n" . $herecurr); - } +# if ($line =~ /\b__attribute__\s*\(\s*\(.*aligned/) { +# WARN("PREFER_ALIGNED", +# "__aligned(size) is preferred over __attribute__((aligned(size)))\n" . $herecurr); +# } # check for sizeof(&) if ($line =~ /\bsizeof\s*\(\s*\&/) { @@ -3088,34 +3090,34 @@ sub process { } # check for new externs in .c files. - if ($realfile =~ /\.c$/ && defined $stat && - $stat =~ /^.\s*(?:extern\s+)?$Type\s+($Ident)(\s*)\(/s) - { - my $function_name = $1; - my $paren_space = $2; - - my $s = $stat; - if (defined $cond) { - substr($s, 0, length($cond), ''); - } - if ($s =~ /^\s*;/ && - $function_name ne 'uninitialized_var') - { - WARN("AVOID_EXTERNS", - "externs should be avoided in .c files\n" . $herecurr); - } - - if ($paren_space =~ /\n/) { - WARN("FUNCTION_ARGUMENTS", - "arguments for function declarations should follow identifier\n" . $herecurr); - } - - } elsif ($realfile =~ /\.c$/ && defined $stat && - $stat =~ /^.\s*extern\s+/) - { - WARN("AVOID_EXTERNS", - "externs should be avoided in .c files\n" . $herecurr); - } +# if ($realfile =~ /\.c$/ && defined $stat && +# $stat =~ /^.\s*(?:extern\s+)?$Type\s+($Ident)(\s*)\(/s) +# { +# my $function_name = $1; +# my $paren_space = $2; +# +# my $s = $stat; +# if (defined $cond) { +# substr($s, 0, length($cond), ''); +# } +# if ($s =~ /^\s*;/ && +# $function_name ne 'uninitialized_var') +# { +# WARN("AVOID_EXTERNS", +# "externs should be avoided in .c files\n" . $herecurr); +# } +# +# if ($paren_space =~ /\n/) { +# WARN("FUNCTION_ARGUMENTS", +# "arguments for function declarations should follow identifier\n" . $herecurr); +# } +# +# } elsif ($realfile =~ /\.c$/ && defined $stat && +# $stat =~ /^.\s*extern\s+/) +# { +# WARN("AVOID_EXTERNS", +# "externs should be avoided in .c files\n" . $herecurr); +# } # checks for new __setup's if ($rawline =~ /\b__setup\("([^"]*)"/) { @@ -3329,7 +3331,8 @@ sub process { $vname has style problems, please review. If any of these errors are false positives, please report -them to the maintainer, see CHECKPATCH in MAINTAINERS. +them to the openocd-devel mailing list or prepare a patch +and send it to Gerrit for review. EOM }