diff options
Diffstat (limited to 'scripts/checkpatch.pl')
| -rwxr-xr-x | scripts/checkpatch.pl | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index c061a63afa20..6b79beb2751d 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl | |||
| @@ -47,6 +47,8 @@ my $ignore_perl_version = 0; | |||
| 47 | my $minimum_perl_version = 5.10.0; | 47 | my $minimum_perl_version = 5.10.0; |
| 48 | my $min_conf_desc_length = 4; | 48 | my $min_conf_desc_length = 4; |
| 49 | my $spelling_file = "$D/spelling.txt"; | 49 | my $spelling_file = "$D/spelling.txt"; |
| 50 | my $codespell = 0; | ||
| 51 | my $codespellfile = "/usr/local/share/codespell/dictionary.txt"; | ||
| 50 | 52 | ||
| 51 | sub help { | 53 | sub help { |
| 52 | my ($exitcode) = @_; | 54 | my ($exitcode) = @_; |
| @@ -88,6 +90,9 @@ Options: | |||
| 88 | file. It's your fault if there's no backup or git | 90 | file. It's your fault if there's no backup or git |
| 89 | --ignore-perl-version override checking of perl version. expect | 91 | --ignore-perl-version override checking of perl version. expect |
| 90 | runtime errors. | 92 | runtime errors. |
| 93 | --codespell Use the codespell dictionary for spelling/typos | ||
| 94 | (default:/usr/local/share/codespell/dictionary.txt) | ||
| 95 | --codespellfile Use this codespell dictionary | ||
| 91 | -h, --help, --version display this help and exit | 96 | -h, --help, --version display this help and exit |
| 92 | 97 | ||
| 93 | When FILE is - read standard input. | 98 | When FILE is - read standard input. |
| @@ -146,6 +151,8 @@ GetOptions( | |||
| 146 | 'ignore-perl-version!' => \$ignore_perl_version, | 151 | 'ignore-perl-version!' => \$ignore_perl_version, |
| 147 | 'debug=s' => \%debug, | 152 | 'debug=s' => \%debug, |
| 148 | 'test-only=s' => \$tst_only, | 153 | 'test-only=s' => \$tst_only, |
| 154 | 'codespell!' => \$codespell, | ||
| 155 | 'codespellfile=s' => \$codespellfile, | ||
| 149 | 'h|help' => \$help, | 156 | 'h|help' => \$help, |
| 150 | 'version' => \$help | 157 | 'version' => \$help |
| 151 | ) or help(1); | 158 | ) or help(1); |
| @@ -449,7 +456,6 @@ my $misspellings; | |||
| 449 | my %spelling_fix; | 456 | my %spelling_fix; |
| 450 | 457 | ||
| 451 | if (open(my $spelling, '<', $spelling_file)) { | 458 | if (open(my $spelling, '<', $spelling_file)) { |
| 452 | my @spelling_list; | ||
| 453 | while (<$spelling>) { | 459 | while (<$spelling>) { |
| 454 | my $line = $_; | 460 | my $line = $_; |
| 455 | 461 | ||
| @@ -461,15 +467,39 @@ if (open(my $spelling, '<', $spelling_file)) { | |||
| 461 | 467 | ||
| 462 | my ($suspect, $fix) = split(/\|\|/, $line); | 468 | my ($suspect, $fix) = split(/\|\|/, $line); |
| 463 | 469 | ||
| 464 | push(@spelling_list, $suspect); | ||
| 465 | $spelling_fix{$suspect} = $fix; | 470 | $spelling_fix{$suspect} = $fix; |
| 466 | } | 471 | } |
| 467 | close($spelling); | 472 | close($spelling); |
| 468 | $misspellings = join("|", @spelling_list); | ||
| 469 | } else { | 473 | } else { |
| 470 | warn "No typos will be found - file '$spelling_file': $!\n"; | 474 | warn "No typos will be found - file '$spelling_file': $!\n"; |
| 471 | } | 475 | } |
| 472 | 476 | ||
| 477 | if ($codespell) { | ||
| 478 | if (open(my $spelling, '<', $codespellfile)) { | ||
| 479 | while (<$spelling>) { | ||
| 480 | my $line = $_; | ||
| 481 | |||
| 482 | $line =~ s/\s*\n?$//g; | ||
| 483 | $line =~ s/^\s*//g; | ||
| 484 | |||
| 485 | next if ($line =~ m/^\s*#/); | ||
| 486 | next if ($line =~ m/^\s*$/); | ||
| 487 | next if ($line =~ m/, disabled/i); | ||
| 488 | |||
| 489 | $line =~ s/,.*$//; | ||
| 490 | |||
| 491 | my ($suspect, $fix) = split(/->/, $line); | ||
| 492 | |||
| 493 | $spelling_fix{$suspect} = $fix; | ||
| 494 | } | ||
| 495 | close($spelling); | ||
| 496 | } else { | ||
| 497 | warn "No codespell typos will be found - file '$codespellfile': $!\n"; | ||
| 498 | } | ||
| 499 | } | ||
| 500 | |||
| 501 | $misspellings = join("|", sort keys %spelling_fix) if keys %spelling_fix; | ||
| 502 | |||
| 473 | sub build_types { | 503 | sub build_types { |
| 474 | my $mods = "(?x: \n" . join("|\n ", @modifierList) . "\n)"; | 504 | my $mods = "(?x: \n" . join("|\n ", @modifierList) . "\n)"; |
| 475 | my $all = "(?x: \n" . join("|\n ", @typeList) . "\n)"; | 505 | my $all = "(?x: \n" . join("|\n ", @typeList) . "\n)"; |
| @@ -2305,7 +2335,7 @@ sub process { | |||
| 2305 | # Check for various typo / spelling mistakes | 2335 | # Check for various typo / spelling mistakes |
| 2306 | if (defined($misspellings) && | 2336 | if (defined($misspellings) && |
| 2307 | ($in_commit_log || $line =~ /^(?:\+|Subject:)/i)) { | 2337 | ($in_commit_log || $line =~ /^(?:\+|Subject:)/i)) { |
| 2308 | while ($rawline =~ /(?:^|[^a-z@])($misspellings)(?:$|[^a-z@])/gi) { | 2338 | while ($rawline =~ /(?:^|[^a-z@])($misspellings)(?:\b|$|[^a-z@])/gi) { |
| 2309 | my $typo = $1; | 2339 | my $typo = $1; |
| 2310 | my $typo_fix = $spelling_fix{lc($typo)}; | 2340 | my $typo_fix = $spelling_fix{lc($typo)}; |
| 2311 | $typo_fix = ucfirst($typo_fix) if ($typo =~ /^[A-Z]/); | 2341 | $typo_fix = ucfirst($typo_fix) if ($typo =~ /^[A-Z]/); |
