util/lint: update checkpatch & spelling.txt to upstream versions
- Update checkpatch.pl to version 0547fa58 (checkpatch: add 6 missing types to --list-types) - Update spelling.txt to version d9f91f8 (scripts/spelling.txt: add a bunch more spelling mistakes) - Fix an additional unescaped left brace in a regex - causes warnings in new versions of perl. Change-Id: Ic443099e90a46280f18d58799afc72d00dc83793 Signed-off-by: Martin Roth <gaumless@gmail.com> Reviewed-on: https://review.coreboot.org/21581 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Chris Ching <chingcodes@chromium.org> Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
parent
2785c118a6
commit
387dec815c
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/perl -w
|
#!/usr/bin/env perl
|
||||||
# (c) 2001, Dave Jones. (the file handling bit)
|
# (c) 2001, Dave Jones. (the file handling bit)
|
||||||
# (c) 2005, Joel Schopp <jschopp@austin.ibm.com> (the ugly bit)
|
# (c) 2005, Joel Schopp <jschopp@austin.ibm.com> (the ugly bit)
|
||||||
# (c) 2007,2008, Andy Whitcroft <apw@uk.ibm.com> (new conditions, test suite)
|
# (c) 2007,2008, Andy Whitcroft <apw@uk.ibm.com> (new conditions, test suite)
|
||||||
|
@ -6,6 +6,7 @@
|
||||||
# Licensed under the terms of the GNU GPL License version 2
|
# Licensed under the terms of the GNU GPL License version 2
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
|
use warnings;
|
||||||
use POSIX;
|
use POSIX;
|
||||||
use File::Basename;
|
use File::Basename;
|
||||||
use Cwd 'abs_path';
|
use Cwd 'abs_path';
|
||||||
|
@ -56,7 +57,8 @@ my $spelling_file = "$D/spelling.txt";
|
||||||
my $codespell = 0;
|
my $codespell = 0;
|
||||||
my $codespellfile = "/usr/share/codespell/dictionary.txt";
|
my $codespellfile = "/usr/share/codespell/dictionary.txt";
|
||||||
my $conststructsfile = "$D/const_structs.checkpatch";
|
my $conststructsfile = "$D/const_structs.checkpatch";
|
||||||
my $color = 1;
|
my $typedefsfile = "";
|
||||||
|
my $color = "auto";
|
||||||
my $allow_c99_comments = 1;
|
my $allow_c99_comments = 1;
|
||||||
|
|
||||||
# For coreboot jenkins
|
# For coreboot jenkins
|
||||||
|
@ -122,7 +124,9 @@ Options:
|
||||||
--codespell Use the codespell dictionary for spelling/typos
|
--codespell Use the codespell dictionary for spelling/typos
|
||||||
(default:/usr/share/codespell/dictionary.txt)
|
(default:/usr/share/codespell/dictionary.txt)
|
||||||
--codespellfile Use this codespell dictionary
|
--codespellfile Use this codespell dictionary
|
||||||
--color Use colors when output is STDOUT (default: on)
|
--typedefsfile Read additional types from this file
|
||||||
|
--color[=WHEN] Use colors 'always', 'never', or only when output
|
||||||
|
is a terminal ('auto'). Default is 'auto'.
|
||||||
-h, --help, --version display this help and exit
|
-h, --help, --version display this help and exit
|
||||||
|
|
||||||
When FILE is - read standard input.
|
When FILE is - read standard input.
|
||||||
|
@ -150,7 +154,8 @@ sub list_types {
|
||||||
close($script);
|
close($script);
|
||||||
|
|
||||||
my @types = ();
|
my @types = ();
|
||||||
for ($text =~ /\b(?:(?:CHK|WARN|ERROR)\s*\(\s*"([^"]+)")/g) {
|
# Also catch when type or level is passed through a variable
|
||||||
|
for ($text =~ /(?:(?:\bCHK|\bWARN|\bERROR|&\{\$msg_level})\s*\(|\$msg_type\s*=)\s*"([^"]+)"/g) {
|
||||||
push (@types, $_);
|
push (@types, $_);
|
||||||
}
|
}
|
||||||
@types = sort(uniq(@types));
|
@types = sort(uniq(@types));
|
||||||
|
@ -188,6 +193,14 @@ if (-f $conf) {
|
||||||
unshift(@ARGV, @conf_args) if @conf_args;
|
unshift(@ARGV, @conf_args) if @conf_args;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Perl's Getopt::Long allows options to take optional arguments after a space.
|
||||||
|
# Prevent --color by itself from consuming other arguments
|
||||||
|
foreach (@ARGV) {
|
||||||
|
if ($_ eq "--color" || $_ eq "-color") {
|
||||||
|
$_ = "--color=$color";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
GetOptions(
|
GetOptions(
|
||||||
'q|quiet+' => \$quiet,
|
'q|quiet+' => \$quiet,
|
||||||
'tree!' => \$tree,
|
'tree!' => \$tree,
|
||||||
|
@ -218,7 +231,10 @@ GetOptions(
|
||||||
'test-only=s' => \$tst_only,
|
'test-only=s' => \$tst_only,
|
||||||
'codespell!' => \$codespell,
|
'codespell!' => \$codespell,
|
||||||
'codespellfile=s' => \$codespellfile,
|
'codespellfile=s' => \$codespellfile,
|
||||||
'color!' => \$color,
|
'typedefsfile=s' => \$typedefsfile,
|
||||||
|
'color=s' => \$color,
|
||||||
|
'no-color' => \$color, #keep old behaviors of -nocolor
|
||||||
|
'nocolor' => \$color, #keep old behaviors of -nocolor
|
||||||
'h|help' => \$help,
|
'h|help' => \$help,
|
||||||
'version' => \$help
|
'version' => \$help
|
||||||
) or help(1);
|
) or help(1);
|
||||||
|
@ -244,6 +260,18 @@ if ($#ARGV < 0) {
|
||||||
push(@ARGV, '-');
|
push(@ARGV, '-');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($color =~ /^[01]$/) {
|
||||||
|
$color = !$color;
|
||||||
|
} elsif ($color =~ /^always$/i) {
|
||||||
|
$color = 1;
|
||||||
|
} elsif ($color =~ /^never$/i) {
|
||||||
|
$color = 0;
|
||||||
|
} elsif ($color =~ /^auto$/i) {
|
||||||
|
$color = (-t STDOUT);
|
||||||
|
} else {
|
||||||
|
die "Invalid color mode: $color\n";
|
||||||
|
}
|
||||||
|
|
||||||
sub hash_save_array_words {
|
sub hash_save_array_words {
|
||||||
my ($hashRef, $arrayRef) = @_;
|
my ($hashRef, $arrayRef) = @_;
|
||||||
|
|
||||||
|
@ -639,9 +667,11 @@ if ($codespell) {
|
||||||
|
|
||||||
$misspellings = join("|", sort keys %spelling_fix) if keys %spelling_fix;
|
$misspellings = join("|", sort keys %spelling_fix) if keys %spelling_fix;
|
||||||
|
|
||||||
my $const_structs = "";
|
sub read_words {
|
||||||
if (open(my $conststructs, '<', $conststructsfile)) {
|
my ($wordsRef, $file) = @_;
|
||||||
while (<$conststructs>) {
|
|
||||||
|
if (open(my $words, '<', $file)) {
|
||||||
|
while (<$words>) {
|
||||||
my $line = $_;
|
my $line = $_;
|
||||||
|
|
||||||
$line =~ s/\s*\n?$//g;
|
$line =~ s/\s*\n?$//g;
|
||||||
|
@ -650,18 +680,31 @@ if (open(my $conststructs, '<', $conststructsfile)) {
|
||||||
next if ($line =~ m/^\s*#/);
|
next if ($line =~ m/^\s*#/);
|
||||||
next if ($line =~ m/^\s*$/);
|
next if ($line =~ m/^\s*$/);
|
||||||
if ($line =~ /\s/) {
|
if ($line =~ /\s/) {
|
||||||
print("$conststructsfile: '$line' invalid - ignored\n");
|
print("$file: '$line' invalid - ignored\n");
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
$const_structs .= '|' if ($const_structs ne "");
|
$$wordsRef .= '|' if ($$wordsRef ne "");
|
||||||
$const_structs .= $line;
|
$$wordsRef .= $line;
|
||||||
}
|
}
|
||||||
close($conststructsfile);
|
close($file);
|
||||||
} else {
|
return 1;
|
||||||
warn "No structs that should be const will be found - file '$conststructsfile': $!\n";
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $const_structs = "";
|
||||||
|
read_words(\$const_structs, $conststructsfile)
|
||||||
|
or warn "No structs that should be const will be found - file '$conststructsfile': $!\n";
|
||||||
|
|
||||||
|
my $typeOtherTypedefs = "";
|
||||||
|
if (length($typedefsfile)) {
|
||||||
|
read_words(\$typeOtherTypedefs, $typedefsfile)
|
||||||
|
or warn "No additional types will be considered - file '$typedefsfile': $!\n";
|
||||||
|
}
|
||||||
|
$typeTypedefs .= '|' . $typeOtherTypedefs if ($typeOtherTypedefs ne "");
|
||||||
|
|
||||||
sub build_types {
|
sub build_types {
|
||||||
my $mods = "(?x: \n" . join("|\n ", (@modifierList, @modifierListFile)) . "\n)";
|
my $mods = "(?x: \n" . join("|\n ", (@modifierList, @modifierListFile)) . "\n)";
|
||||||
my $all = "(?x: \n" . join("|\n ", (@typeList, @typeListFile)) . "\n)";
|
my $all = "(?x: \n" . join("|\n ", (@typeList, @typeListFile)) . "\n)";
|
||||||
|
@ -724,7 +767,7 @@ our $FuncArg = qr{$Typecast{0,1}($LvalOrFunc|$Constant|$String)};
|
||||||
|
|
||||||
our $declaration_macros = qr{(?x:
|
our $declaration_macros = qr{(?x:
|
||||||
(?:$Storage\s+)?(?:[A-Z_][A-Z0-9]*_){0,2}(?:DEFINE|DECLARE)(?:_[A-Z0-9]+){1,6}\s*\(|
|
(?:$Storage\s+)?(?:[A-Z_][A-Z0-9]*_){0,2}(?:DEFINE|DECLARE)(?:_[A-Z0-9]+){1,6}\s*\(|
|
||||||
(?:$Storage\s+)?LIST_HEAD\s*\(|
|
(?:$Storage\s+)?[HLP]?LIST_HEAD\s*\(|
|
||||||
(?:$Storage\s+)?${Type}\s+uninitialized_var\s*\(
|
(?:$Storage\s+)?${Type}\s+uninitialized_var\s*\(
|
||||||
)};
|
)};
|
||||||
|
|
||||||
|
@ -858,6 +901,7 @@ sub git_commit_info {
|
||||||
# echo "commit $(cut -c 1-12,41-)"
|
# echo "commit $(cut -c 1-12,41-)"
|
||||||
# done
|
# done
|
||||||
} elsif ($lines[0] =~ /^fatal: ambiguous argument '$commit': unknown revision or path not in the working tree\./) {
|
} elsif ($lines[0] =~ /^fatal: ambiguous argument '$commit': unknown revision or path not in the working tree\./) {
|
||||||
|
$id = undef;
|
||||||
} else {
|
} else {
|
||||||
$id = substr($lines[0], 0, 12);
|
$id = substr($lines[0], 0, 12);
|
||||||
$desc = substr($lines[0], 41);
|
$desc = substr($lines[0], 41);
|
||||||
|
@ -905,9 +949,8 @@ if ($git) {
|
||||||
}
|
}
|
||||||
|
|
||||||
my $vname;
|
my $vname;
|
||||||
for my $f (@ARGV) {
|
for my $filename (@ARGV) {
|
||||||
my $FILE;
|
my $FILE;
|
||||||
my ($filename) = ($f =~ /^(.*)$/);
|
|
||||||
if ($git) {
|
if ($git) {
|
||||||
open($FILE, '-|', "git format-patch -M --stdout -1 $filename") ||
|
open($FILE, '-|', "git format-patch -M --stdout -1 $filename") ||
|
||||||
die "$P: $filename: git format-patch failed - $!\n";
|
die "$P: $filename: git format-patch failed - $!\n";
|
||||||
|
@ -1880,7 +1923,7 @@ sub report {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
my $output = '';
|
my $output = '';
|
||||||
if (-t STDOUT && $color) {
|
if ($color) {
|
||||||
if ($level eq 'ERROR') {
|
if ($level eq 'ERROR') {
|
||||||
$output .= RED;
|
$output .= RED;
|
||||||
} elsif ($level eq 'WARNING') {
|
} elsif ($level eq 'WARNING') {
|
||||||
|
@ -1891,10 +1934,10 @@ sub report {
|
||||||
}
|
}
|
||||||
$output .= $prefix . $level . ':';
|
$output .= $prefix . $level . ':';
|
||||||
if ($show_types) {
|
if ($show_types) {
|
||||||
$output .= BLUE if (-t STDOUT && $color);
|
$output .= BLUE if ($color);
|
||||||
$output .= "$type:";
|
$output .= "$type:";
|
||||||
}
|
}
|
||||||
$output .= RESET if (-t STDOUT && $color);
|
$output .= RESET if ($color);
|
||||||
$output .= ' ' . $msg . "\n";
|
$output .= ' ' . $msg . "\n";
|
||||||
|
|
||||||
if ($showfile) {
|
if ($showfile) {
|
||||||
|
@ -2212,8 +2255,7 @@ sub process {
|
||||||
}
|
}
|
||||||
#next;
|
#next;
|
||||||
}
|
}
|
||||||
if ($rawline=~/^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@(.*)/) {
|
if ($rawline =~ /^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@/) {
|
||||||
my $context = $4;
|
|
||||||
$realline=$1-1;
|
$realline=$1-1;
|
||||||
if (defined $2) {
|
if (defined $2) {
|
||||||
$realcnt=$3+1;
|
$realcnt=$3+1;
|
||||||
|
@ -2222,12 +2264,6 @@ sub process {
|
||||||
}
|
}
|
||||||
$in_comment = 0;
|
$in_comment = 0;
|
||||||
|
|
||||||
if ($context =~ /\b(\w+)\s*\(/) {
|
|
||||||
$context_function = $1;
|
|
||||||
} else {
|
|
||||||
undef $context_function;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Guestimate if this is a continuing comment. Run
|
# Guestimate if this is a continuing comment. Run
|
||||||
# the context looking for a comment "edge". If this
|
# the context looking for a comment "edge". If this
|
||||||
# edge is a close comment then we must be in a comment
|
# edge is a close comment then we must be in a comment
|
||||||
|
@ -2298,7 +2334,8 @@ sub process {
|
||||||
|
|
||||||
#extract the line range in the file after the patch is applied
|
#extract the line range in the file after the patch is applied
|
||||||
if (!$in_commit_log &&
|
if (!$in_commit_log &&
|
||||||
$line =~ /^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@/) {
|
$line =~ /^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@(.*)/) {
|
||||||
|
my $context = $4;
|
||||||
$is_patch = 1;
|
$is_patch = 1;
|
||||||
$first_line = $linenr + 1;
|
$first_line = $linenr + 1;
|
||||||
$realline=$1-1;
|
$realline=$1-1;
|
||||||
|
@ -2314,6 +2351,11 @@ sub process {
|
||||||
%suppress_whiletrailers = ();
|
%suppress_whiletrailers = ();
|
||||||
%suppress_export = ();
|
%suppress_export = ();
|
||||||
$suppress_statement = 0;
|
$suppress_statement = 0;
|
||||||
|
if ($context =~ /\b(\w+)\s*\(/) {
|
||||||
|
$context_function = $1;
|
||||||
|
} else {
|
||||||
|
undef $context_function;
|
||||||
|
}
|
||||||
next;
|
next;
|
||||||
|
|
||||||
# track the line number as we move through the hunk, note that
|
# track the line number as we move through the hunk, note that
|
||||||
|
@ -2567,6 +2609,7 @@ sub process {
|
||||||
# Check for git id commit length and improperly formed commit descriptions
|
# Check for git id commit length and improperly formed commit descriptions
|
||||||
if ($in_commit_log && !$commit_log_possible_stack_dump &&
|
if ($in_commit_log && !$commit_log_possible_stack_dump &&
|
||||||
$line !~ /^\s*(?:Link|Patchwork|http|https|BugLink):/i &&
|
$line !~ /^\s*(?:Link|Patchwork|http|https|BugLink):/i &&
|
||||||
|
$line !~ /^This reverts commit [0-9a-f]{7,40}/ &&
|
||||||
($line =~ /\bcommit\s+[0-9a-f]{5,}\b/i ||
|
($line =~ /\bcommit\s+[0-9a-f]{5,}\b/i ||
|
||||||
($line =~ /(?:\s|^)[0-9a-f]{12,40}(?:[\s"'\(\[]|$)/i &&
|
($line =~ /(?:\s|^)[0-9a-f]{12,40}(?:[\s"'\(\[]|$)/i &&
|
||||||
$line !~ /[\<\[][0-9a-f]{12,40}[\>\]]/i &&
|
$line !~ /[\<\[][0-9a-f]{12,40}[\>\]]/i &&
|
||||||
|
@ -2615,7 +2658,8 @@ sub process {
|
||||||
($id, $description) = git_commit_info($orig_commit,
|
($id, $description) = git_commit_info($orig_commit,
|
||||||
$id, $orig_desc);
|
$id, $orig_desc);
|
||||||
|
|
||||||
if ($short || $long || $space || $case || ($orig_desc ne $description) || !$hasparens) {
|
if (defined($id) &&
|
||||||
|
($short || $long || $space || $case || ($orig_desc ne $description) || !$hasparens)) {
|
||||||
ERROR("GIT_COMMIT_ID",
|
ERROR("GIT_COMMIT_ID",
|
||||||
"Please use git commit description style 'commit <12+ chars of sha1> (\"<title line>\")' - ie: '${init_char}ommit $id (\"$description\")'\n" . $herecurr);
|
"Please use git commit description style 'commit <12+ chars of sha1> (\"<title line>\")' - ie: '${init_char}ommit $id (\"$description\")'\n" . $herecurr);
|
||||||
}
|
}
|
||||||
|
@ -2656,8 +2700,8 @@ sub process {
|
||||||
# Check if it's the start of a commit log
|
# Check if it's the start of a commit log
|
||||||
# (not a header line and we haven't seen the patch filename)
|
# (not a header line and we haven't seen the patch filename)
|
||||||
if ($in_header_lines && $realfile =~ /^$/ &&
|
if ($in_header_lines && $realfile =~ /^$/ &&
|
||||||
!($rawline =~ /^\s+\S/ ||
|
!($rawline =~ /^\s+(?:\S|$)/ ||
|
||||||
$rawline =~ /^(commit\b|from\b|[\w-]+:).*$/i)) {
|
$rawline =~ /^(?:commit\b|from\b|[\w-]+:)/i)) {
|
||||||
$in_header_lines = 0;
|
$in_header_lines = 0;
|
||||||
$in_commit_log = 1;
|
$in_commit_log = 1;
|
||||||
$has_commit_log = 1;
|
$has_commit_log = 1;
|
||||||
|
@ -2699,9 +2743,9 @@ sub process {
|
||||||
my $typo_fix = $spelling_fix{lc($typo)};
|
my $typo_fix = $spelling_fix{lc($typo)};
|
||||||
$typo_fix = ucfirst($typo_fix) if ($typo =~ /^[A-Z]/);
|
$typo_fix = ucfirst($typo_fix) if ($typo =~ /^[A-Z]/);
|
||||||
$typo_fix = uc($typo_fix) if ($typo =~ /^[A-Z]+$/);
|
$typo_fix = uc($typo_fix) if ($typo =~ /^[A-Z]+$/);
|
||||||
my $msg_type = \&WARN;
|
my $msg_level = \&WARN;
|
||||||
$msg_type = \&CHK if ($file);
|
$msg_level = \&CHK if ($file);
|
||||||
if (&{$msg_type}("TYPO_SPELLING",
|
if (&{$msg_level}("TYPO_SPELLING",
|
||||||
"'$typo' may be misspelled - perhaps '$typo_fix'?\n" . $herecurr) &&
|
"'$typo' may be misspelled - perhaps '$typo_fix'?\n" . $herecurr) &&
|
||||||
$fix) {
|
$fix) {
|
||||||
$fixed[$fixlinenr] =~ s/(^|[^A-Za-z@])($typo)($|[^A-Za-z@])/$1$typo_fix$3/;
|
$fixed[$fixlinenr] =~ s/(^|[^A-Za-z@])($typo)($|[^A-Za-z@])/$1$typo_fix$3/;
|
||||||
|
@ -2737,9 +2781,9 @@ sub process {
|
||||||
$rawline =~ /\b59\s+Temple\s+Pl/i ||
|
$rawline =~ /\b59\s+Temple\s+Pl/i ||
|
||||||
$rawline =~ /\b51\s+Franklin\s+St/i) {
|
$rawline =~ /\b51\s+Franklin\s+St/i) {
|
||||||
my $herevet = "$here\n" . cat_vet($rawline) . "\n";
|
my $herevet = "$here\n" . cat_vet($rawline) . "\n";
|
||||||
my $msg_type = \&ERROR;
|
my $msg_level = \&ERROR;
|
||||||
$msg_type = \&CHK if ($file);
|
$msg_level = \&CHK if ($file);
|
||||||
&{$msg_type}("FSF_MAILING_ADDRESS",
|
&{$msg_level}("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. Linux already includes a copy of the GPL.\n" . $herevet)
|
"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. Linux already includes a copy of the GPL.\n" . $herevet)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2785,11 +2829,15 @@ sub process {
|
||||||
#print "is_start<$is_start> is_end<$is_end> length<$length>\n";
|
#print "is_start<$is_start> is_end<$is_end> length<$length>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
# discourage the addition of CONFIG_EXPERIMENTAL in Kconfig.
|
# check for MAINTAINERS entries that don't have the right form
|
||||||
if ($realfile =~ /Kconfig/ &&
|
if ($realfile =~ /^MAINTAINERS$/ &&
|
||||||
$line =~ /.\s*depends on\s+.*\bEXPERIMENTAL\b/) {
|
$rawline =~ /^\+[A-Z]:/ &&
|
||||||
WARN("CONFIG_EXPERIMENTAL",
|
$rawline !~ /^\+[A-Z]:\t\S/) {
|
||||||
"Use of CONFIG_EXPERIMENTAL is deprecated. For alternatives, see https://lkml.org/lkml/2012/10/23/580\n");
|
if (WARN("MAINTAINERS_STYLE",
|
||||||
|
"MAINTAINERS entries use one tab after TYPE:\n" . $herecurr) &&
|
||||||
|
$fix) {
|
||||||
|
$fixed[$fixlinenr] =~ s/^(\+[A-Z]):\s*/$1:\t/;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# discourage the use of boolean for type definition attributes of Kconfig options
|
# discourage the use of boolean for type definition attributes of Kconfig options
|
||||||
|
@ -2855,7 +2903,7 @@ sub process {
|
||||||
# #defines that are a single string
|
# #defines that are a single string
|
||||||
#
|
#
|
||||||
# There are 3 different line length message types:
|
# There are 3 different line length message types:
|
||||||
# LONG_LINE_COMMENT a comment starts before but extends beyond $max_linelength
|
# LONG_LINE_COMMENT a comment starts before but extends beyond $max_line_length
|
||||||
# LONG_LINE_STRING a string starts before but extends beyond $max_line_length
|
# LONG_LINE_STRING a string starts before but extends beyond $max_line_length
|
||||||
# LONG_LINE all other lines longer than $max_line_length
|
# LONG_LINE all other lines longer than $max_line_length
|
||||||
#
|
#
|
||||||
|
@ -2973,7 +3021,7 @@ sub process {
|
||||||
|
|
||||||
# check multi-line statement indentation matches previous line
|
# check multi-line statement indentation matches previous line
|
||||||
if ($^V && $^V ge 5.10.0 &&
|
if ($^V && $^V ge 5.10.0 &&
|
||||||
$prevline =~ /^\+([ \t]*)((?:$c90_Keywords(?:\s+if)\s*)|(?:$Declare\s*)?(?:$Ident|\(\s*\*\s*$Ident\s*\))\s*|$Ident\s*=\s*$Ident\s*)\(.*(\&\&|\|\||,)\s*$/) {
|
$prevline =~ /^\+([ \t]*)((?:$c90_Keywords(?:\s+if)\s*)|(?:$Declare\s*)?(?:$Ident|\(\s*\*\s*$Ident\s*\))\s*|(?:\*\s*)*$Lval\s*=\s*$Ident\s*)\(.*(\&\&|\|\||,)\s*$/) {
|
||||||
$prevline =~ /^\+(\t*)(.*)$/;
|
$prevline =~ /^\+(\t*)(.*)$/;
|
||||||
my $oldindent = $1;
|
my $oldindent = $1;
|
||||||
my $rest = $2;
|
my $rest = $2;
|
||||||
|
@ -3161,6 +3209,17 @@ sub process {
|
||||||
# check we are in a valid C source file if not then ignore this hunk
|
# check we are in a valid C source file if not then ignore this hunk
|
||||||
next if ($realfile !~ /\.(h|c)$/);
|
next if ($realfile !~ /\.(h|c)$/);
|
||||||
|
|
||||||
|
# check if this appears to be the start function declaration, save the name
|
||||||
|
if ($sline =~ /^\+\{\s*$/ &&
|
||||||
|
$prevline =~ /^\+(?:(?:(?:$Storage|$Inline)\s*)*\s*$Type\s*)?($Ident)\(/) {
|
||||||
|
$context_function = $1;
|
||||||
|
}
|
||||||
|
|
||||||
|
# check if this appears to be the end of function declaration
|
||||||
|
if ($sline =~ /^\+\}\s*$/) {
|
||||||
|
undef $context_function;
|
||||||
|
}
|
||||||
|
|
||||||
# check indentation of any line with a bare else
|
# check indentation of any line with a bare else
|
||||||
# (but not if it is a multiple line "if (foo) return bar; else return baz;")
|
# (but not if it is a multiple line "if (foo) return bar; else return baz;")
|
||||||
# if the previous line is a break or return and is indented 1 tab more...
|
# if the previous line is a break or return and is indented 1 tab more...
|
||||||
|
@ -3185,12 +3244,6 @@ sub process {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# discourage the addition of CONFIG_EXPERIMENTAL in #if(def).
|
|
||||||
if ($line =~ /^\+\s*\#\s*if.*\bCONFIG_EXPERIMENTAL\b/) {
|
|
||||||
WARN("CONFIG_EXPERIMENTAL",
|
|
||||||
"Use of CONFIG_EXPERIMENTAL is deprecated. For alternatives, see https://lkml.org/lkml/2012/10/23/580\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
# check for RCS/CVS revision markers
|
# check for RCS/CVS revision markers
|
||||||
if ($rawline =~ /^\+.*\$(Revision|Log|Id)(?:\$|)/) {
|
if ($rawline =~ /^\+.*\$(Revision|Log|Id)(?:\$|)/) {
|
||||||
WARN("CVS_KEYWORD",
|
WARN("CVS_KEYWORD",
|
||||||
|
@ -3219,7 +3272,7 @@ sub process {
|
||||||
my ($stat, $cond, $line_nr_next, $remain_next, $off_next,
|
my ($stat, $cond, $line_nr_next, $remain_next, $off_next,
|
||||||
$realline_next);
|
$realline_next);
|
||||||
#print "LINE<$line>\n";
|
#print "LINE<$line>\n";
|
||||||
if ($linenr >= $suppress_statement &&
|
if ($linenr > $suppress_statement &&
|
||||||
$realcnt && $sline =~ /.\s*\S/) {
|
$realcnt && $sline =~ /.\s*\S/) {
|
||||||
($stat, $cond, $line_nr_next, $remain_next, $off_next) =
|
($stat, $cond, $line_nr_next, $remain_next, $off_next) =
|
||||||
ctx_statement_block($linenr, $realcnt, 0);
|
ctx_statement_block($linenr, $realcnt, 0);
|
||||||
|
@ -3366,7 +3419,7 @@ sub process {
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check relative indent for conditionals and blocks.
|
# Check relative indent for conditionals and blocks.
|
||||||
if ($line =~ /\b(?:(?:if|while|for|(?:[a-z_]+|)for_each[a-z_]+)\s*\(|do\b)/ && $line !~ /^.\s*#/ && $line !~ /\}\s*while\s*/) {
|
if ($line =~ /\b(?:(?:if|while|for|(?:[a-z_]+|)for_each[a-z_]+)\s*\(|(?:do|else)\b)/ && $line !~ /^.\s*#/ && $line !~ /\}\s*while\s*/) {
|
||||||
($stat, $cond, $line_nr_next, $remain_next, $off_next) =
|
($stat, $cond, $line_nr_next, $remain_next, $off_next) =
|
||||||
ctx_statement_block($linenr, $realcnt, 0)
|
ctx_statement_block($linenr, $realcnt, 0)
|
||||||
if (!defined $stat);
|
if (!defined $stat);
|
||||||
|
@ -3458,6 +3511,8 @@ sub process {
|
||||||
if ($check && $s ne '' &&
|
if ($check && $s ne '' &&
|
||||||
(($sindent % 8) != 0 ||
|
(($sindent % 8) != 0 ||
|
||||||
($sindent < $indent) ||
|
($sindent < $indent) ||
|
||||||
|
($sindent == $indent &&
|
||||||
|
($s !~ /^\s*(?:\}|\{|else\b)/)) ||
|
||||||
($sindent > $indent + 8))) {
|
($sindent > $indent + 8))) {
|
||||||
WARN("SUSPECT_CODE_INDENT",
|
WARN("SUSPECT_CODE_INDENT",
|
||||||
"suspect code indent for conditional statements ($indent, $sindent)\n" . $herecurr . "$stat_real\n");
|
"suspect code indent for conditional statements ($indent, $sindent)\n" . $herecurr . "$stat_real\n");
|
||||||
|
@ -3551,7 +3606,7 @@ sub process {
|
||||||
$fixedline =~ s/\s*=\s*$/ = {/;
|
$fixedline =~ s/\s*=\s*$/ = {/;
|
||||||
fix_insert_line($fixlinenr, $fixedline);
|
fix_insert_line($fixlinenr, $fixedline);
|
||||||
$fixedline = $line;
|
$fixedline = $line;
|
||||||
$fixedline =~ s/^(.\s*){\s*/$1/;
|
$fixedline =~ s/^(.\s*)\{\s*/$1/;
|
||||||
fix_insert_line($fixlinenr, $fixedline);
|
fix_insert_line($fixlinenr, $fixedline);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3783,9 +3838,9 @@ sub process {
|
||||||
|
|
||||||
# avoid BUG() or BUG_ON()
|
# avoid BUG() or BUG_ON()
|
||||||
if ($line =~ /\b(?:BUG|BUG_ON)\b/) {
|
if ($line =~ /\b(?:BUG|BUG_ON)\b/) {
|
||||||
my $msg_type = \&WARN;
|
my $msg_level = \&WARN;
|
||||||
$msg_type = \&CHK if ($file);
|
$msg_level = \&CHK if ($file);
|
||||||
&{$msg_type}("AVOID_BUG",
|
&{$msg_level}("AVOID_BUG",
|
||||||
"Avoid crashing the kernel - try using WARN_ON & recovery code rather than BUG() or BUG_ON()\n" . $herecurr);
|
"Avoid crashing the kernel - try using WARN_ON & recovery code rather than BUG() or BUG_ON()\n" . $herecurr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3894,7 +3949,7 @@ sub process {
|
||||||
my $fixedline = rtrim($prevrawline) . " {";
|
my $fixedline = rtrim($prevrawline) . " {";
|
||||||
fix_insert_line($fixlinenr, $fixedline);
|
fix_insert_line($fixlinenr, $fixedline);
|
||||||
$fixedline = $rawline;
|
$fixedline = $rawline;
|
||||||
$fixedline =~ s/^(.\s*){\s*/$1\t/;
|
$fixedline =~ s/^(.\s*)\{\s*/$1\t/;
|
||||||
if ($fixedline !~ /^\+\s*$/) {
|
if ($fixedline !~ /^\+\s*$/) {
|
||||||
fix_insert_line($fixlinenr, $fixedline);
|
fix_insert_line($fixlinenr, $fixedline);
|
||||||
}
|
}
|
||||||
|
@ -4315,10 +4370,10 @@ sub process {
|
||||||
|
|
||||||
# messages are ERROR, but ?: are CHK
|
# messages are ERROR, but ?: are CHK
|
||||||
if ($ok == 0) {
|
if ($ok == 0) {
|
||||||
my $msg_type = \&ERROR;
|
my $msg_level = \&ERROR;
|
||||||
$msg_type = \&CHK if (($op eq '?:' || $op eq '?' || $op eq ':') && $ctx =~ /VxV/);
|
$msg_level = \&CHK if (($op eq '?:' || $op eq '?' || $op eq ':') && $ctx =~ /VxV/);
|
||||||
|
|
||||||
if (&{$msg_type}("SPACING",
|
if (&{$msg_level}("SPACING",
|
||||||
"spaces required around that '$op' $at\n" . $hereptr)) {
|
"spaces required around that '$op' $at\n" . $hereptr)) {
|
||||||
$good = rtrim($fix_elements[$n]) . " " . trim($fix_elements[$n + 1]) . " ";
|
$good = rtrim($fix_elements[$n]) . " " . trim($fix_elements[$n + 1]) . " ";
|
||||||
if (defined $fix_elements[$n + 2]) {
|
if (defined $fix_elements[$n + 2]) {
|
||||||
|
@ -4384,7 +4439,8 @@ sub process {
|
||||||
if (ERROR("SPACING",
|
if (ERROR("SPACING",
|
||||||
"space required before the open brace '{'\n" . $herecurr) &&
|
"space required before the open brace '{'\n" . $herecurr) &&
|
||||||
$fix) {
|
$fix) {
|
||||||
$fixed[$fixlinenr] =~ s/^(\+.*(?:do|\))){/$1 {/;
|
#coreboot - Open braces must be escaped in regex
|
||||||
|
$fixed[$fixlinenr] =~ s/^(\+.*(?:do|\)))\{/$1 \{/;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4472,6 +4528,30 @@ sub process {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# check for unnecessary parentheses around comparisons in if uses
|
||||||
|
if ($^V && $^V ge 5.10.0 && defined($stat) &&
|
||||||
|
$stat =~ /(^.\s*if\s*($balanced_parens))/) {
|
||||||
|
my $if_stat = $1;
|
||||||
|
my $test = substr($2, 1, -1);
|
||||||
|
my $herectx;
|
||||||
|
while ($test =~ /(?:^|[^\w\&\!\~])+\s*\(\s*([\&\!\~]?\s*$Lval\s*(?:$Compare\s*$FuncArg)?)\s*\)/g) {
|
||||||
|
my $match = $1;
|
||||||
|
# avoid parentheses around potential macro args
|
||||||
|
next if ($match =~ /^\s*\w+\s*$/);
|
||||||
|
if (!defined($herectx)) {
|
||||||
|
$herectx = $here . "\n";
|
||||||
|
my $cnt = statement_rawlines($if_stat);
|
||||||
|
for (my $n = 0; $n < $cnt; $n++) {
|
||||||
|
my $rl = raw_line($linenr, $n);
|
||||||
|
$herectx .= $rl . "\n";
|
||||||
|
last if $rl =~ /^[ \+].*\{/;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CHK("UNNECESSARY_PARENTHESES",
|
||||||
|
"Unnecessary parentheses around '$match'\n" . $herectx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#goto labels aren't indented, allow a single space however
|
#goto labels aren't indented, allow a single space however
|
||||||
if ($line=~/^.\s+[A-Za-z\d_]+:(?![0-9]+)/ and
|
if ($line=~/^.\s+[A-Za-z\d_]+:(?![0-9]+)/ and
|
||||||
!($line=~/^. [A-Za-z\d_]+:/) and !($line=~/^.\s+default:/)) {
|
!($line=~/^. [A-Za-z\d_]+:/) and !($line=~/^.\s+default:/)) {
|
||||||
|
@ -4882,8 +4962,10 @@ sub process {
|
||||||
$dstat !~ /^\(\{/ && # ({...
|
$dstat !~ /^\(\{/ && # ({...
|
||||||
$ctx !~ /^.\s*#\s*define\s+TRACE_(?:SYSTEM|INCLUDE_FILE|INCLUDE_PATH)\b/)
|
$ctx !~ /^.\s*#\s*define\s+TRACE_(?:SYSTEM|INCLUDE_FILE|INCLUDE_PATH)\b/)
|
||||||
{
|
{
|
||||||
|
if ($dstat =~ /^\s*if\b/) {
|
||||||
if ($dstat =~ /;/) {
|
ERROR("MULTISTATEMENT_MACRO_USE_DO_WHILE",
|
||||||
|
"Macros starting with if should be enclosed by a do - while loop to avoid possible if/else logic defects\n" . "$herectx");
|
||||||
|
} elsif ($dstat =~ /;/) {
|
||||||
ERROR("MULTISTATEMENT_MACRO_USE_DO_WHILE",
|
ERROR("MULTISTATEMENT_MACRO_USE_DO_WHILE",
|
||||||
"Macros with multiple statements should be enclosed in a do - while loop\n" . "$herectx");
|
"Macros with multiple statements should be enclosed in a do - while loop\n" . "$herectx");
|
||||||
} else {
|
} else {
|
||||||
|
@ -4914,17 +4996,17 @@ sub process {
|
||||||
foreach my $arg (@def_args) {
|
foreach my $arg (@def_args) {
|
||||||
next if ($arg =~ /\.\.\./);
|
next if ($arg =~ /\.\.\./);
|
||||||
next if ($arg =~ /^type$/i);
|
next if ($arg =~ /^type$/i);
|
||||||
my $tmp = $define_stmt;
|
my $tmp_stmt = $define_stmt;
|
||||||
$tmp =~ s/\b(typeof|__typeof__|__builtin\w+|typecheck\s*\(\s*$Type\s*,|\#+)\s*\(*\s*$arg\s*\)*\b//g;
|
$tmp_stmt =~ s/\b(typeof|__typeof__|__builtin\w+|typecheck\s*\(\s*$Type\s*,|\#+)\s*\(*\s*$arg\s*\)*\b//g;
|
||||||
$tmp =~ s/\#+\s*$arg\b//g;
|
$tmp_stmt =~ s/\#+\s*$arg\b//g;
|
||||||
$tmp =~ s/\b$arg\s*\#\#//g;
|
$tmp_stmt =~ s/\b$arg\s*\#\#//g;
|
||||||
my $use_cnt = $tmp =~ s/\b$arg\b//g;
|
my $use_cnt = $tmp_stmt =~ s/\b$arg\b//g;
|
||||||
if ($use_cnt > 1) {
|
if ($use_cnt > 1) {
|
||||||
CHK("MACRO_ARG_REUSE",
|
CHK("MACRO_ARG_REUSE",
|
||||||
"Macro argument reuse '$arg' - possible side-effects?\n" . "$herectx");
|
"Macro argument reuse '$arg' - possible side-effects?\n" . "$herectx");
|
||||||
}
|
}
|
||||||
# check if any macro arguments may have other precedence issues
|
# check if any macro arguments may have other precedence issues
|
||||||
if ($define_stmt =~ m/($Operators)?\s*\b$arg\b\s*($Operators)?/m &&
|
if ($tmp_stmt =~ m/($Operators)?\s*\b$arg\b\s*($Operators)?/m &&
|
||||||
((defined($1) && $1 ne ',') ||
|
((defined($1) && $1 ne ',') ||
|
||||||
(defined($2) && $2 ne ','))) {
|
(defined($2) && $2 ne ','))) {
|
||||||
CHK("MACRO_ARG_PRECEDENCE",
|
CHK("MACRO_ARG_PRECEDENCE",
|
||||||
|
@ -5205,14 +5287,16 @@ sub process {
|
||||||
"break quoted strings at a space character\n" . $hereprev);
|
"break quoted strings at a space character\n" . $hereprev);
|
||||||
}
|
}
|
||||||
|
|
||||||
#check for an embedded function name in a string when the function is known
|
# check for an embedded function name in a string when the function is known
|
||||||
# as part of a diff. This does not work for -f --file checking as it
|
# This does not work very well for -f --file checking as it depends on patch
|
||||||
#depends on patch context providing the function name
|
# context providing the function name or a single line form for in-file
|
||||||
|
# function declarations
|
||||||
if ($line =~ /^\+.*$String/ &&
|
if ($line =~ /^\+.*$String/ &&
|
||||||
defined($context_function) &&
|
defined($context_function) &&
|
||||||
get_quoted_string($line, $rawline) =~ /\b$context_function\b/) {
|
get_quoted_string($line, $rawline) =~ /\b$context_function\b/ &&
|
||||||
|
length(get_quoted_string($line, $rawline)) != (length($context_function) + 2)) {
|
||||||
WARN("EMBEDDED_FUNCTION_NAME",
|
WARN("EMBEDDED_FUNCTION_NAME",
|
||||||
"Prefer using \"%s\", __func__ to embedded function names\n" . $herecurr);
|
"Prefer using '\"%s...\", __func__' to using '$context_function', this function's name, in a string\n" . $herecurr);
|
||||||
}
|
}
|
||||||
|
|
||||||
# check for spaces before a quoted newline
|
# check for spaces before a quoted newline
|
||||||
|
@ -5319,7 +5403,7 @@ sub process {
|
||||||
my ($s, $c) = ctx_statement_block($linenr - 3, $realcnt, 0);
|
my ($s, $c) = ctx_statement_block($linenr - 3, $realcnt, 0);
|
||||||
# print("line: <$line>\nprevline: <$prevline>\ns: <$s>\nc: <$c>\n\n\n");
|
# print("line: <$line>\nprevline: <$prevline>\ns: <$s>\nc: <$c>\n\n\n");
|
||||||
|
|
||||||
if ($c =~ /(?:^|\n)[ \+]\s*(?:$Type\s*)?\Q$testval\E\s*=\s*(?:\([^\)]*\)\s*)?\s*(?:devm_)?(?:[kv][czm]alloc(?:_node|_array)?\b|kstrdup|(?:dev_)?alloc_skb)/) {
|
if ($s =~ /(?:^|\n)[ \+]\s*(?:$Type\s*)?\Q$testval\E\s*=\s*(?:\([^\)]*\)\s*)?\s*(?:devm_)?(?:[kv][czm]alloc(?:_node|_array)?\b|kstrdup|kmemdup|(?:dev_)?alloc_skb)/) {
|
||||||
WARN("OOM_MESSAGE",
|
WARN("OOM_MESSAGE",
|
||||||
"Possible unnecessary 'out of memory' message\n" . $hereprev);
|
"Possible unnecessary 'out of memory' message\n" . $hereprev);
|
||||||
}
|
}
|
||||||
|
@ -5542,34 +5626,24 @@ sub process {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check for expedited grace periods that interrupt non-idle non-nohz
|
|
||||||
# online CPUs. These expedited can therefore degrade real-time response
|
|
||||||
# if used carelessly, and should be avoided where not absolutely
|
|
||||||
# needed. It is always OK to use synchronize_rcu_expedited() and
|
|
||||||
# synchronize_sched_expedited() at boot time (before real-time applications
|
|
||||||
# start) and in error situations where real-time response is compromised in
|
|
||||||
# any case. Note that synchronize_srcu_expedited() does -not- interrupt
|
|
||||||
# other CPUs, so don't warn on uses of synchronize_srcu_expedited().
|
|
||||||
# Of course, nothing comes for free, and srcu_read_lock() and
|
|
||||||
# srcu_read_unlock() do contain full memory barriers in payment for
|
|
||||||
# synchronize_srcu_expedited() non-interruption properties.
|
|
||||||
if ($line =~ /\b(synchronize_rcu_expedited|synchronize_sched_expedited)\(/) {
|
|
||||||
WARN("EXPEDITED_RCU_GRACE_PERIOD",
|
|
||||||
"expedited RCU grace periods should be avoided where they can degrade real-time response\n" . $herecurr);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# check of hardware specific defines
|
# check of hardware specific defines
|
||||||
if ($line =~ m@^.\s*\#\s*if.*\b(__i386__|__powerpc64__|__sun__|__s390x__)\b@ && $realfile !~ m@include/asm-@) {
|
if ($line =~ m@^.\s*\#\s*if.*\b(__i386__|__powerpc64__|__sun__|__s390x__)\b@ && $realfile !~ m@include/asm-@) {
|
||||||
CHK("ARCH_DEFINES",
|
CHK("ARCH_DEFINES",
|
||||||
"architecture specific defines should be avoided\n" . $herecurr);
|
"architecture specific defines should be avoided\n" . $herecurr);
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check that the storage class is at the beginning of a declaration
|
# check that the storage class is not after a type
|
||||||
# coreboot: skip complaint about our '#define asmlinkage' lines
|
if ($line =~ /\b($Type)\s+($Storage)\b/) {
|
||||||
if ($line =~ /\b$Storage\b/ && $line !~ /^.\s*$Storage\b/ && $line !~ /^.\s*#\s*define\s+$Storage\b/) {
|
|
||||||
WARN("STORAGE_CLASS",
|
WARN("STORAGE_CLASS",
|
||||||
"storage class should be at the beginning of the declaration\n" . $herecurr)
|
"storage class '$2' should be located before type '$1'\n" . $herecurr);
|
||||||
|
}
|
||||||
|
# Check that the storage class is at the beginning of a declaration
|
||||||
|
if ($line =~ /\b$Storage\b/ &&
|
||||||
|
$line !~ /^.\s*$Storage/ &&
|
||||||
|
$line =~ /^.\s*(.+?)\$Storage\s/ &&
|
||||||
|
$1 !~ /[\,\)]\s*$/) {
|
||||||
|
WARN("STORAGE_CLASS",
|
||||||
|
"storage class should be at the beginning of the declaration\n" . $herecurr);
|
||||||
}
|
}
|
||||||
|
|
||||||
# check the location of the inline attribute, that it is between
|
# check the location of the inline attribute, that it is between
|
||||||
|
@ -5708,6 +5782,32 @@ sub process {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# check for vsprintf extension %p<foo> misuses
|
||||||
|
if ($^V && $^V ge 5.10.0 &&
|
||||||
|
defined $stat &&
|
||||||
|
$stat =~ /^\+(?![^\{]*\{\s*).*\b(\w+)\s*\(.*$String\s*,/s &&
|
||||||
|
$1 !~ /^_*volatile_*$/) {
|
||||||
|
my $bad_extension = "";
|
||||||
|
my $lc = $stat =~ tr@\n@@;
|
||||||
|
$lc = $lc + $linenr;
|
||||||
|
for (my $count = $linenr; $count <= $lc; $count++) {
|
||||||
|
my $fmt = get_quoted_string($lines[$count - 1], raw_line($count, 0));
|
||||||
|
$fmt =~ s/%%//g;
|
||||||
|
if ($fmt =~ /(\%[\*\d\.]*p(?![\WFfSsBKRraEhMmIiUDdgVCbGNO]).)/) {
|
||||||
|
$bad_extension = $1;
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($bad_extension ne "") {
|
||||||
|
my $stat_real = raw_line($linenr, 0);
|
||||||
|
for (my $count = $linenr + 1; $count <= $lc; $count++) {
|
||||||
|
$stat_real = $stat_real . "\n" . raw_line($count, 0);
|
||||||
|
}
|
||||||
|
WARN("VSPRINTF_POINTER_EXTENSION",
|
||||||
|
"Invalid vsprintf pointer extension '$bad_extension'\n" . "$here\n$stat_real\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# Check for misused memsets
|
# Check for misused memsets
|
||||||
if ($^V && $^V ge 5.10.0 &&
|
if ($^V && $^V ge 5.10.0 &&
|
||||||
defined $stat &&
|
defined $stat &&
|
||||||
|
@ -5886,7 +5986,8 @@ sub process {
|
||||||
"externs should be avoided in .c files\n" . $herecurr);
|
"externs should be avoided in .c files\n" . $herecurr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($realfile =~ /\.[ch]$/ && defined $stat &&
|
# check for function declarations that have arguments without identifier names
|
||||||
|
if (defined $stat &&
|
||||||
$stat =~ /^.\s*(?:extern\s+)?$Type\s*$Ident\s*\(\s*([^{]+)\s*\)\s*;/s &&
|
$stat =~ /^.\s*(?:extern\s+)?$Type\s*$Ident\s*\(\s*([^{]+)\s*\)\s*;/s &&
|
||||||
$1 ne "void") {
|
$1 ne "void") {
|
||||||
my $args = trim($1);
|
my $args = trim($1);
|
||||||
|
@ -5899,6 +6000,29 @@ sub process {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# check for function definitions
|
||||||
|
if ($^V && $^V ge 5.10.0 &&
|
||||||
|
defined $stat &&
|
||||||
|
$stat =~ /^.\s*(?:$Storage\s+)?$Type\s*($Ident)\s*$balanced_parens\s*{/s) {
|
||||||
|
$context_function = $1;
|
||||||
|
|
||||||
|
# check for multiline function definition with misplaced open brace
|
||||||
|
my $ok = 0;
|
||||||
|
my $cnt = statement_rawlines($stat);
|
||||||
|
my $herectx = $here . "\n";
|
||||||
|
for (my $n = 0; $n < $cnt; $n++) {
|
||||||
|
my $rl = raw_line($linenr, $n);
|
||||||
|
$herectx .= $rl . "\n";
|
||||||
|
$ok = 1 if ($rl =~ /^[ \+]\{/);
|
||||||
|
$ok = 1 if ($rl =~ /\{/ && $n == 0);
|
||||||
|
last if $rl =~ /^[ \+].*\{/;
|
||||||
|
}
|
||||||
|
if (!$ok) {
|
||||||
|
ERROR("OPEN_BRACE",
|
||||||
|
"open brace '{' following function definitions go on the next line\n" . $herectx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# checks for new __setup's
|
# checks for new __setup's
|
||||||
if ($rawline =~ /\b__setup\("([^"]*)"/) {
|
if ($rawline =~ /\b__setup\("([^"]*)"/) {
|
||||||
my $name = $1;
|
my $name = $1;
|
||||||
|
@ -5925,7 +6049,8 @@ sub process {
|
||||||
|
|
||||||
# check for k[mz]alloc with multiplies that could be kmalloc_array/kcalloc
|
# check for k[mz]alloc with multiplies that could be kmalloc_array/kcalloc
|
||||||
if ($^V && $^V ge 5.10.0 &&
|
if ($^V && $^V ge 5.10.0 &&
|
||||||
$line =~ /\b($Lval)\s*\=\s*(?:$balanced_parens)?\s*(k[mz]alloc)\s*\(\s*($FuncArg)\s*\*\s*($FuncArg)\s*,/) {
|
defined $stat &&
|
||||||
|
$stat =~ /^\+\s*($Lval)\s*\=\s*(?:$balanced_parens)?\s*(k[mz]alloc)\s*\(\s*($FuncArg)\s*\*\s*($FuncArg)\s*,/) {
|
||||||
my $oldfunc = $3;
|
my $oldfunc = $3;
|
||||||
my $a1 = $4;
|
my $a1 = $4;
|
||||||
my $a2 = $10;
|
my $a2 = $10;
|
||||||
|
@ -5939,11 +6064,17 @@ sub process {
|
||||||
}
|
}
|
||||||
if ($r1 !~ /^sizeof\b/ && $r2 =~ /^sizeof\s*\S/ &&
|
if ($r1 !~ /^sizeof\b/ && $r2 =~ /^sizeof\s*\S/ &&
|
||||||
!($r1 =~ /^$Constant$/ || $r1 =~ /^[A-Z_][A-Z0-9_]*$/)) {
|
!($r1 =~ /^$Constant$/ || $r1 =~ /^[A-Z_][A-Z0-9_]*$/)) {
|
||||||
|
my $ctx = '';
|
||||||
|
my $herectx = $here . "\n";
|
||||||
|
my $cnt = statement_rawlines($stat);
|
||||||
|
for (my $n = 0; $n < $cnt; $n++) {
|
||||||
|
$herectx .= raw_line($linenr, $n) . "\n";
|
||||||
|
}
|
||||||
if (WARN("ALLOC_WITH_MULTIPLY",
|
if (WARN("ALLOC_WITH_MULTIPLY",
|
||||||
"Prefer $newfunc over $oldfunc with multiply\n" . $herecurr) &&
|
"Prefer $newfunc over $oldfunc with multiply\n" . $herectx) &&
|
||||||
|
$cnt == 1 &&
|
||||||
$fix) {
|
$fix) {
|
||||||
$fixed[$fixlinenr] =~ s/\b($Lval)\s*\=\s*(?:$balanced_parens)?\s*(k[mz]alloc)\s*\(\s*($FuncArg)\s*\*\s*($FuncArg)/$1 . ' = ' . "$newfunc(" . trim($r1) . ', ' . trim($r2)/e;
|
$fixed[$fixlinenr] =~ s/\b($Lval)\s*\=\s*(?:$balanced_parens)?\s*(k[mz]alloc)\s*\(\s*($FuncArg)\s*\*\s*($FuncArg)/$1 . ' = ' . "$newfunc(" . trim($r1) . ', ' . trim($r2)/e;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6098,11 +6229,11 @@ sub process {
|
||||||
}
|
}
|
||||||
|
|
||||||
# check for various structs that are normally const (ops, kgdb, device_tree)
|
# check for various structs that are normally const (ops, kgdb, device_tree)
|
||||||
|
# and avoid what seem like struct definitions 'struct foo {'
|
||||||
if ($line !~ /\bconst\b/ &&
|
if ($line !~ /\bconst\b/ &&
|
||||||
$line =~ /\bstruct\s+($const_structs)\b/) {
|
$line =~ /\bstruct\s+($const_structs)\b(?!\s*\{)/) {
|
||||||
WARN("CONST_STRUCT",
|
WARN("CONST_STRUCT",
|
||||||
"struct $1 should normally be const\n" .
|
"struct $1 should normally be const\n" . $herecurr);
|
||||||
$herecurr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# use of NR_CPUS is usually wrong
|
# use of NR_CPUS is usually wrong
|
||||||
|
|
|
@ -46,12 +46,15 @@ ackowledge||acknowledge
|
||||||
ackowledged||acknowledged
|
ackowledged||acknowledged
|
||||||
acording||according
|
acording||according
|
||||||
activete||activate
|
activete||activate
|
||||||
|
actived||activated
|
||||||
|
actualy||actually
|
||||||
acumulating||accumulating
|
acumulating||accumulating
|
||||||
acumulator||accumulator
|
acumulator||accumulator
|
||||||
adapater||adapter
|
adapater||adapter
|
||||||
addional||additional
|
addional||additional
|
||||||
additionaly||additionally
|
additionaly||additionally
|
||||||
addres||address
|
addres||address
|
||||||
|
adddress||address
|
||||||
addreses||addresses
|
addreses||addresses
|
||||||
addresss||address
|
addresss||address
|
||||||
aditional||additional
|
aditional||additional
|
||||||
|
@ -76,6 +79,8 @@ algorritm||algorithm
|
||||||
aligment||alignment
|
aligment||alignment
|
||||||
alignement||alignment
|
alignement||alignment
|
||||||
allign||align
|
allign||align
|
||||||
|
alligned||aligned
|
||||||
|
allocatote||allocate
|
||||||
allocatrd||allocated
|
allocatrd||allocated
|
||||||
allocte||allocate
|
allocte||allocate
|
||||||
allpication||application
|
allpication||application
|
||||||
|
@ -126,6 +131,7 @@ arraival||arrival
|
||||||
artifical||artificial
|
artifical||artificial
|
||||||
artillary||artillery
|
artillary||artillery
|
||||||
asign||assign
|
asign||assign
|
||||||
|
asser||assert
|
||||||
assertation||assertion
|
assertation||assertion
|
||||||
assiged||assigned
|
assiged||assigned
|
||||||
assigment||assignment
|
assigment||assignment
|
||||||
|
@ -141,9 +147,11 @@ asycronous||asynchronous
|
||||||
asynchnous||asynchronous
|
asynchnous||asynchronous
|
||||||
atomatically||automatically
|
atomatically||automatically
|
||||||
atomicly||atomically
|
atomicly||atomically
|
||||||
|
atempt||attempt
|
||||||
attachement||attachment
|
attachement||attachment
|
||||||
attched||attached
|
attched||attached
|
||||||
attemps||attempts
|
attemps||attempts
|
||||||
|
attemping||attempting
|
||||||
attruibutes||attributes
|
attruibutes||attributes
|
||||||
authentification||authentication
|
authentification||authentication
|
||||||
automaticaly||automatically
|
automaticaly||automatically
|
||||||
|
@ -174,6 +182,7 @@ bakup||backup
|
||||||
baloon||balloon
|
baloon||balloon
|
||||||
baloons||balloons
|
baloons||balloons
|
||||||
bandwith||bandwidth
|
bandwith||bandwidth
|
||||||
|
banlance||balance
|
||||||
batery||battery
|
batery||battery
|
||||||
beacuse||because
|
beacuse||because
|
||||||
becasue||because
|
becasue||because
|
||||||
|
@ -199,9 +208,11 @@ callibration||calibration
|
||||||
calucate||calculate
|
calucate||calculate
|
||||||
calulate||calculate
|
calulate||calculate
|
||||||
cancelation||cancellation
|
cancelation||cancellation
|
||||||
|
cancle||cancel
|
||||||
capabilites||capabilities
|
capabilites||capabilities
|
||||||
capabitilies||capabilities
|
capabitilies||capabilities
|
||||||
capatibilities||capabilities
|
capatibilities||capabilities
|
||||||
|
capapbilities||capabilities
|
||||||
carefuly||carefully
|
carefuly||carefully
|
||||||
cariage||carriage
|
cariage||carriage
|
||||||
catagory||category
|
catagory||category
|
||||||
|
@ -210,6 +221,7 @@ challange||challenge
|
||||||
challanges||challenges
|
challanges||challenges
|
||||||
chanell||channel
|
chanell||channel
|
||||||
changable||changeable
|
changable||changeable
|
||||||
|
chanined||chained
|
||||||
channle||channel
|
channle||channel
|
||||||
channnel||channel
|
channnel||channel
|
||||||
charachter||character
|
charachter||character
|
||||||
|
@ -235,6 +247,7 @@ claread||cleared
|
||||||
clared||cleared
|
clared||cleared
|
||||||
closeing||closing
|
closeing||closing
|
||||||
clustred||clustered
|
clustred||clustered
|
||||||
|
coexistance||coexistence
|
||||||
collapsable||collapsible
|
collapsable||collapsible
|
||||||
colorfull||colorful
|
colorfull||colorful
|
||||||
comand||command
|
comand||command
|
||||||
|
@ -263,6 +276,7 @@ completition||completion
|
||||||
completly||completely
|
completly||completely
|
||||||
complient||compliant
|
complient||compliant
|
||||||
componnents||components
|
componnents||components
|
||||||
|
compoment||component
|
||||||
compres||compress
|
compres||compress
|
||||||
compresion||compression
|
compresion||compression
|
||||||
comression||compression
|
comression||compression
|
||||||
|
@ -270,6 +284,7 @@ comunication||communication
|
||||||
conbination||combination
|
conbination||combination
|
||||||
conditionaly||conditionally
|
conditionaly||conditionally
|
||||||
conected||connected
|
conected||connected
|
||||||
|
connecetd||connected
|
||||||
configuartion||configuration
|
configuartion||configuration
|
||||||
configuratoin||configuration
|
configuratoin||configuration
|
||||||
configuraton||configuration
|
configuraton||configuration
|
||||||
|
@ -291,11 +306,14 @@ continous||continuous
|
||||||
continously||continuously
|
continously||continuously
|
||||||
continueing||continuing
|
continueing||continuing
|
||||||
contraints||constraints
|
contraints||constraints
|
||||||
|
contol||control
|
||||||
|
contoller||controller
|
||||||
controled||controlled
|
controled||controlled
|
||||||
controler||controller
|
controler||controller
|
||||||
controll||control
|
controll||control
|
||||||
contruction||construction
|
contruction||construction
|
||||||
contry||country
|
contry||country
|
||||||
|
conuntry||country
|
||||||
convertion||conversion
|
convertion||conversion
|
||||||
convertor||converter
|
convertor||converter
|
||||||
convienient||convenient
|
convienient||convenient
|
||||||
|
@ -305,16 +323,19 @@ correponding||corresponding
|
||||||
correponds||corresponds
|
correponds||corresponds
|
||||||
correspoding||corresponding
|
correspoding||corresponding
|
||||||
cotrol||control
|
cotrol||control
|
||||||
|
cound||could
|
||||||
couter||counter
|
couter||counter
|
||||||
coutner||counter
|
coutner||counter
|
||||||
cryptocraphic||cryptographic
|
cryptocraphic||cryptographic
|
||||||
cunter||counter
|
cunter||counter
|
||||||
curently||currently
|
curently||currently
|
||||||
|
cylic||cyclic
|
||||||
dafault||default
|
dafault||default
|
||||||
deafult||default
|
deafult||default
|
||||||
deamon||daemon
|
deamon||daemon
|
||||||
decompres||decompress
|
decompres||decompress
|
||||||
decription||description
|
decription||description
|
||||||
|
dectected||detected
|
||||||
defailt||default
|
defailt||default
|
||||||
defferred||deferred
|
defferred||deferred
|
||||||
definate||definite
|
definate||definite
|
||||||
|
@ -332,6 +353,8 @@ delare||declare
|
||||||
delares||declares
|
delares||declares
|
||||||
delaring||declaring
|
delaring||declaring
|
||||||
delemiter||delimiter
|
delemiter||delimiter
|
||||||
|
demodualtor||demodulator
|
||||||
|
demension||dimension
|
||||||
dependancies||dependencies
|
dependancies||dependencies
|
||||||
dependancy||dependency
|
dependancy||dependency
|
||||||
dependant||dependent
|
dependant||dependent
|
||||||
|
@ -346,11 +369,13 @@ descritptor||descriptor
|
||||||
desctiptor||descriptor
|
desctiptor||descriptor
|
||||||
desriptor||descriptor
|
desriptor||descriptor
|
||||||
desriptors||descriptors
|
desriptors||descriptors
|
||||||
|
destionation||destination
|
||||||
destory||destroy
|
destory||destroy
|
||||||
destoryed||destroyed
|
destoryed||destroyed
|
||||||
destorys||destroys
|
destorys||destroys
|
||||||
destroied||destroyed
|
destroied||destroyed
|
||||||
detabase||database
|
detabase||database
|
||||||
|
deteced||detected
|
||||||
develope||develop
|
develope||develop
|
||||||
developement||development
|
developement||development
|
||||||
developped||developed
|
developped||developed
|
||||||
|
@ -365,6 +390,8 @@ dictionnary||dictionary
|
||||||
didnt||didn't
|
didnt||didn't
|
||||||
diferent||different
|
diferent||different
|
||||||
differrence||difference
|
differrence||difference
|
||||||
|
diffrent||different
|
||||||
|
diffrentiate||differentiate
|
||||||
difinition||definition
|
difinition||definition
|
||||||
diplay||display
|
diplay||display
|
||||||
direectly||directly
|
direectly||directly
|
||||||
|
@ -398,6 +425,7 @@ efective||effective
|
||||||
efficently||efficiently
|
efficently||efficiently
|
||||||
ehther||ether
|
ehther||ether
|
||||||
eigth||eight
|
eigth||eight
|
||||||
|
elementry||elementary
|
||||||
eletronic||electronic
|
eletronic||electronic
|
||||||
embeded||embedded
|
embeded||embedded
|
||||||
enabledi||enabled
|
enabledi||enabled
|
||||||
|
@ -405,9 +433,11 @@ enchanced||enhanced
|
||||||
encorporating||incorporating
|
encorporating||incorporating
|
||||||
encrupted||encrypted
|
encrupted||encrypted
|
||||||
encrypiton||encryption
|
encrypiton||encryption
|
||||||
|
encryptio||encryption
|
||||||
endianess||endianness
|
endianess||endianness
|
||||||
enhaced||enhanced
|
enhaced||enhanced
|
||||||
enlightnment||enlightenment
|
enlightnment||enlightenment
|
||||||
|
entrys||entries
|
||||||
enocded||encoded
|
enocded||encoded
|
||||||
enterily||entirely
|
enterily||entirely
|
||||||
enviroiment||environment
|
enviroiment||environment
|
||||||
|
@ -425,6 +455,7 @@ etsbalishment||establishment
|
||||||
excecutable||executable
|
excecutable||executable
|
||||||
exceded||exceeded
|
exceded||exceeded
|
||||||
excellant||excellent
|
excellant||excellent
|
||||||
|
exeed||exceed
|
||||||
existance||existence
|
existance||existence
|
||||||
existant||existent
|
existant||existent
|
||||||
exixt||exist
|
exixt||exist
|
||||||
|
@ -443,6 +474,7 @@ extened||extended
|
||||||
extensability||extensibility
|
extensability||extensibility
|
||||||
extention||extension
|
extention||extension
|
||||||
extracter||extractor
|
extracter||extractor
|
||||||
|
falied||failed
|
||||||
faild||failed
|
faild||failed
|
||||||
faill||fail
|
faill||fail
|
||||||
failied||failed
|
failied||failed
|
||||||
|
@ -452,6 +484,7 @@ failuer||failure
|
||||||
faireness||fairness
|
faireness||fairness
|
||||||
falied||failed
|
falied||failed
|
||||||
faliure||failure
|
faliure||failure
|
||||||
|
fallbck||fallback
|
||||||
familar||familiar
|
familar||familiar
|
||||||
fatser||faster
|
fatser||faster
|
||||||
feauture||feature
|
feauture||feature
|
||||||
|
@ -492,6 +525,7 @@ futhermore||furthermore
|
||||||
futrue||future
|
futrue||future
|
||||||
gaurenteed||guaranteed
|
gaurenteed||guaranteed
|
||||||
generiously||generously
|
generiously||generously
|
||||||
|
genereate||generate
|
||||||
genric||generic
|
genric||generic
|
||||||
globel||global
|
globel||global
|
||||||
grabing||grabbing
|
grabing||grabbing
|
||||||
|
@ -513,8 +547,10 @@ hierachy||hierarchy
|
||||||
hierarchie||hierarchy
|
hierarchie||hierarchy
|
||||||
howver||however
|
howver||however
|
||||||
hsould||should
|
hsould||should
|
||||||
|
hypervior||hypervisor
|
||||||
hypter||hyper
|
hypter||hyper
|
||||||
identidier||identifier
|
identidier||identifier
|
||||||
|
iligal||illegal
|
||||||
illigal||illegal
|
illigal||illegal
|
||||||
imblance||imbalance
|
imblance||imbalance
|
||||||
immeadiately||immediately
|
immeadiately||immediately
|
||||||
|
@ -546,6 +582,7 @@ independant||independent
|
||||||
independantly||independently
|
independantly||independently
|
||||||
independed||independent
|
independed||independent
|
||||||
indiate||indicate
|
indiate||indicate
|
||||||
|
indicat||indicate
|
||||||
inexpect||inexpected
|
inexpect||inexpected
|
||||||
infomation||information
|
infomation||information
|
||||||
informatiom||information
|
informatiom||information
|
||||||
|
@ -590,6 +627,9 @@ interruptted||interrupted
|
||||||
interupted||interrupted
|
interupted||interrupted
|
||||||
interupt||interrupt
|
interupt||interrupt
|
||||||
intial||initial
|
intial||initial
|
||||||
|
intialisation||initialisation
|
||||||
|
intialised||initialised
|
||||||
|
intialise||initialise
|
||||||
intialization||initialization
|
intialization||initialization
|
||||||
intialized||initialized
|
intialized||initialized
|
||||||
intialize||initialize
|
intialize||initialize
|
||||||
|
@ -600,6 +640,7 @@ intuative||intuitive
|
||||||
invaid||invalid
|
invaid||invalid
|
||||||
invalde||invalid
|
invalde||invalid
|
||||||
invalide||invalid
|
invalide||invalid
|
||||||
|
invalud||invalid
|
||||||
invididual||individual
|
invididual||individual
|
||||||
invokation||invocation
|
invokation||invocation
|
||||||
invokations||invocations
|
invokations||invocations
|
||||||
|
@ -660,18 +701,26 @@ messags||messages
|
||||||
messgaes||messages
|
messgaes||messages
|
||||||
messsage||message
|
messsage||message
|
||||||
messsages||messages
|
messsages||messages
|
||||||
|
micropone||microphone
|
||||||
microprocesspr||microprocessor
|
microprocesspr||microprocessor
|
||||||
milliseonds||milliseconds
|
milliseonds||milliseconds
|
||||||
minium||minimum
|
minium||minimum
|
||||||
|
minimam||minimum
|
||||||
minumum||minimum
|
minumum||minimum
|
||||||
|
misalinged||misaligned
|
||||||
miscelleneous||miscellaneous
|
miscelleneous||miscellaneous
|
||||||
misformed||malformed
|
misformed||malformed
|
||||||
mispelled||misspelled
|
mispelled||misspelled
|
||||||
mispelt||misspelt
|
mispelt||misspelt
|
||||||
|
mising||missing
|
||||||
|
missmanaged||mismanaged
|
||||||
|
missmatch||mismatch
|
||||||
miximum||maximum
|
miximum||maximum
|
||||||
mmnemonic||mnemonic
|
mmnemonic||mnemonic
|
||||||
mnay||many
|
mnay||many
|
||||||
modulues||modules
|
modulues||modules
|
||||||
|
momery||memory
|
||||||
|
memomry||memory
|
||||||
monochorome||monochrome
|
monochorome||monochrome
|
||||||
monochromo||monochrome
|
monochromo||monochrome
|
||||||
monocrome||monochrome
|
monocrome||monochrome
|
||||||
|
@ -772,6 +821,7 @@ permissons||permissions
|
||||||
peroid||period
|
peroid||period
|
||||||
persistance||persistence
|
persistance||persistence
|
||||||
persistant||persistent
|
persistant||persistent
|
||||||
|
plalform||platform
|
||||||
platfrom||platform
|
platfrom||platform
|
||||||
plattform||platform
|
plattform||platform
|
||||||
pleaes||please
|
pleaes||please
|
||||||
|
@ -784,6 +834,7 @@ posible||possible
|
||||||
positon||position
|
positon||position
|
||||||
possibilites||possibilities
|
possibilites||possibilities
|
||||||
powerfull||powerful
|
powerfull||powerful
|
||||||
|
preapre||prepare
|
||||||
preceeded||preceded
|
preceeded||preceded
|
||||||
preceeding||preceding
|
preceeding||preceding
|
||||||
preceed||precede
|
preceed||precede
|
||||||
|
@ -842,6 +893,7 @@ psuedo||pseudo
|
||||||
psychadelic||psychedelic
|
psychadelic||psychedelic
|
||||||
pwoer||power
|
pwoer||power
|
||||||
quering||querying
|
quering||querying
|
||||||
|
randomally||randomly
|
||||||
raoming||roaming
|
raoming||roaming
|
||||||
reasearcher||researcher
|
reasearcher||researcher
|
||||||
reasearchers||researchers
|
reasearchers||researchers
|
||||||
|
@ -869,8 +921,10 @@ refernnce||reference
|
||||||
refrence||reference
|
refrence||reference
|
||||||
registerd||registered
|
registerd||registered
|
||||||
registeresd||registered
|
registeresd||registered
|
||||||
|
registerred||registered
|
||||||
registes||registers
|
registes||registers
|
||||||
registraration||registration
|
registraration||registration
|
||||||
|
regsiter||register
|
||||||
regster||register
|
regster||register
|
||||||
regualar||regular
|
regualar||regular
|
||||||
reguator||regulator
|
reguator||regulator
|
||||||
|
@ -888,6 +942,7 @@ replys||replies
|
||||||
reponse||response
|
reponse||response
|
||||||
representaion||representation
|
representaion||representation
|
||||||
reqeust||request
|
reqeust||request
|
||||||
|
requestied||requested
|
||||||
requiere||require
|
requiere||require
|
||||||
requirment||requirement
|
requirment||requirement
|
||||||
requred||required
|
requred||required
|
||||||
|
@ -895,6 +950,7 @@ requried||required
|
||||||
requst||request
|
requst||request
|
||||||
reseting||resetting
|
reseting||resetting
|
||||||
resizeable||resizable
|
resizeable||resizable
|
||||||
|
resouce||resource
|
||||||
resouces||resources
|
resouces||resources
|
||||||
resoures||resources
|
resoures||resources
|
||||||
responce||response
|
responce||response
|
||||||
|
@ -910,6 +966,7 @@ reudce||reduce
|
||||||
reuest||request
|
reuest||request
|
||||||
reuqest||request
|
reuqest||request
|
||||||
reutnred||returned
|
reutnred||returned
|
||||||
|
revsion||revision
|
||||||
rmeoved||removed
|
rmeoved||removed
|
||||||
rmeove||remove
|
rmeove||remove
|
||||||
rmeoves||removes
|
rmeoves||removes
|
||||||
|
@ -981,6 +1038,7 @@ spinlcok||spinlock
|
||||||
spinock||spinlock
|
spinock||spinlock
|
||||||
splitted||split
|
splitted||split
|
||||||
spreaded||spread
|
spreaded||spread
|
||||||
|
spurrious||spurious
|
||||||
sructure||structure
|
sructure||structure
|
||||||
stablilization||stabilization
|
stablilization||stabilization
|
||||||
staically||statically
|
staically||statically
|
||||||
|
@ -1013,6 +1071,7 @@ superseeded||superseded
|
||||||
suplied||supplied
|
suplied||supplied
|
||||||
suported||supported
|
suported||supported
|
||||||
suport||support
|
suport||support
|
||||||
|
supportet||supported
|
||||||
suppored||supported
|
suppored||supported
|
||||||
supportin||supporting
|
supportin||supporting
|
||||||
suppoted||supported
|
suppoted||supported
|
||||||
|
@ -1056,6 +1115,7 @@ throught||through
|
||||||
thses||these
|
thses||these
|
||||||
tiggered||triggered
|
tiggered||triggered
|
||||||
tipically||typically
|
tipically||typically
|
||||||
|
timout||timeout
|
||||||
tmis||this
|
tmis||this
|
||||||
torerable||tolerable
|
torerable||tolerable
|
||||||
tramsmitted||transmitted
|
tramsmitted||transmitted
|
||||||
|
@ -1068,6 +1128,7 @@ transfering||transferring
|
||||||
transision||transition
|
transision||transition
|
||||||
transmittd||transmitted
|
transmittd||transmitted
|
||||||
transormed||transformed
|
transormed||transformed
|
||||||
|
trasfer||transfer
|
||||||
trasmission||transmission
|
trasmission||transmission
|
||||||
treshold||threshold
|
treshold||threshold
|
||||||
trigerring||triggering
|
trigerring||triggering
|
||||||
|
@ -1081,6 +1142,7 @@ unconditionaly||unconditionally
|
||||||
underun||underrun
|
underun||underrun
|
||||||
unecessary||unnecessary
|
unecessary||unnecessary
|
||||||
unexecpted||unexpected
|
unexecpted||unexpected
|
||||||
|
unexepected||unexpected
|
||||||
unexpcted||unexpected
|
unexpcted||unexpected
|
||||||
unexpectd||unexpected
|
unexpectd||unexpected
|
||||||
unexpeted||unexpected
|
unexpeted||unexpected
|
||||||
|
@ -1096,6 +1158,7 @@ unneded||unneeded
|
||||||
unneedingly||unnecessarily
|
unneedingly||unnecessarily
|
||||||
unnsupported||unsupported
|
unnsupported||unsupported
|
||||||
unmached||unmatched
|
unmached||unmatched
|
||||||
|
unregester||unregister
|
||||||
unresgister||unregister
|
unresgister||unregister
|
||||||
unrgesiter||unregister
|
unrgesiter||unregister
|
||||||
unsinged||unsigned
|
unsinged||unsigned
|
||||||
|
@ -1134,6 +1197,7 @@ virtaul||virtual
|
||||||
virtiual||virtual
|
virtiual||virtual
|
||||||
visiters||visitors
|
visiters||visitors
|
||||||
vitual||virtual
|
vitual||virtual
|
||||||
|
wakeus||wakeups
|
||||||
wating||waiting
|
wating||waiting
|
||||||
wether||whether
|
wether||whether
|
||||||
whataver||whatever
|
whataver||whatever
|
||||||
|
|
Loading…
Reference in New Issue