checkpatch: move repeated word test
authorJoe Perches <joe@perches.com>
Fri, 16 Oct 2020 03:11:52 +0000 (20:11 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 16 Oct 2020 18:11:20 +0000 (11:11 -0700)
Currently this test only works on .[ch] files.

Move the test to check more file types and the commit log.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Link: http://lkml.kernel.org/r/180b3b5677771c902b2e2f7a2b7090ede65fe004.camel@perches.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
scripts/checkpatch.pl

index 9998340..268028e 100755 (executable)
@@ -2991,6 +2991,42 @@ sub process {
                        }
                }
 
+# check for repeated words separated by a single space
+               if ($rawline =~ /^\+/ || $in_commit_log) {
+                       while ($rawline =~ /\b($word_pattern) (?=($word_pattern))/g) {
+
+                               my $first = $1;
+                               my $second = $2;
+
+                               if ($first =~ /(?:struct|union|enum)/) {
+                                       pos($rawline) += length($first) + length($second) + 1;
+                                       next;
+                               }
+
+                               next if ($first ne $second);
+                               next if ($first eq 'long');
+
+                               if (WARN("REPEATED_WORD",
+                                        "Possible repeated word: '$first'\n" . $herecurr) &&
+                                   $fix) {
+                                       $fixed[$fixlinenr] =~ s/\b$first $second\b/$first/;
+                               }
+                       }
+
+                       # if it's a repeated word on consecutive lines in a comment block
+                       if ($prevline =~ /$;+\s*$/ &&
+                           $prevrawline =~ /($word_pattern)\s*$/) {
+                               my $last_word = $1;
+                               if ($rawline =~ /^\+\s*\*\s*$last_word /) {
+                                       if (WARN("REPEATED_WORD",
+                                                "Possible repeated word: '$last_word'\n" . $hereprev) &&
+                                           $fix) {
+                                               $fixed[$fixlinenr] =~ s/(\+\s*\*\s*)$last_word /$1/;
+                                       }
+                               }
+                       }
+               }
+
 # ignore non-hunk lines and lines being removed
                next if (!$hunk_line || $line =~ /^-/);
 
@@ -3314,42 +3350,6 @@ sub process {
                        }
                }
 
-# check for repeated words separated by a single space
-               if ($rawline =~ /^\+/) {
-                       while ($rawline =~ /\b($word_pattern) (?=($word_pattern))/g) {
-
-                               my $first = $1;
-                               my $second = $2;
-
-                               if ($first =~ /(?:struct|union|enum)/) {
-                                       pos($rawline) += length($first) + length($second) + 1;
-                                       next;
-                               }
-
-                               next if ($first ne $second);
-                               next if ($first eq 'long');
-
-                               if (WARN("REPEATED_WORD",
-                                        "Possible repeated word: '$first'\n" . $herecurr) &&
-                                   $fix) {
-                                       $fixed[$fixlinenr] =~ s/\b$first $second\b/$first/;
-                               }
-                       }
-
-                       # if it's a repeated word on consecutive lines in a comment block
-                       if ($prevline =~ /$;+\s*$/ &&
-                           $prevrawline =~ /($word_pattern)\s*$/) {
-                               my $last_word = $1;
-                               if ($rawline =~ /^\+\s*\*\s*$last_word /) {
-                                       if (WARN("REPEATED_WORD",
-                                                "Possible repeated word: '$last_word'\n" . $hereprev) &&
-                                           $fix) {
-                                               $fixed[$fixlinenr] =~ s/(\+\s*\*\s*)$last_word /$1/;
-                                       }
-                               }
-                       }
-               }
-
 # check for space before tabs.
                if ($rawline =~ /^\+/ && $rawline =~ / \t/) {
                        my $herevet = "$here\n" . cat_vet($rawline) . "\n";