checkpatch: fix check for the FSF address
[openocd.git] / tools / scripts / checkpatch.pl
index 1089c5113446afcb18e2fb27ae1ade4e6c7a0cbc..4eb50c3cb0a9e50bc4f7f07a7d42ac30f9258bd9 100755 (executable)
@@ -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;
@@ -1629,6 +1631,16 @@ sub process {
                        $rpt_cleaners = 1;
                }
 
+               if ($rawline =~ /\bwrite to the Free/i ||
+                   $rawline =~ /\b59\s+Temple\s+Pl/i ||
+                   $rawline =~ /\b51\s+Franklin\s+St/i) {
+                       my $herevet = "$here\n" . cat_vet($rawline) . "\n";
+                       ERROR("FSF_MAILING_ADDRESS",
+                             "Do not include the paragraph about writing to the Free Software Foundation's mailing address " .
+                             "from the sample GPL notice. The FSF has changed addresses in the past, and may do so again. " .
+                             "OpenOCD already includes a copy of the GPL.\n" . $herevet)
+               }
+
 # check for Kconfig help text having a real description
 # Only applies when adding the entry originally, after that we do not have
 # sufficient context to determine whether it is indeed long enough.
@@ -1664,15 +1676,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 +1733,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 +1747,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 +1835,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 +1977,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 +2133,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 +2973,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 +3076,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 +3100,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 +3341,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
        }
 

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)