util/lint/checkpatch.pl: Reduce difference with linux v5.18
Signed-off-by: Elyes Haouas <ehaouas@noos.fr> Change-Id: Id5eb4823399088746a34721a9855bbaf5f97b7b6 Reviewed-on: https://review.coreboot.org/c/coreboot/+/64572 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Martin L Roth <gaumless@tutanota.com>
This commit is contained in:
parent
f044264886
commit
26e0b94614
|
@ -480,9 +480,10 @@ our $Sparse = qr{
|
||||||
__force|
|
__force|
|
||||||
__iomem|
|
__iomem|
|
||||||
__must_check|
|
__must_check|
|
||||||
__init_refok|
|
|
||||||
__kprobes|
|
__kprobes|
|
||||||
__ref|
|
__ref|
|
||||||
|
__refconst|
|
||||||
|
__refdata|
|
||||||
__rcu|
|
__rcu|
|
||||||
__private
|
__private
|
||||||
}x;
|
}x;
|
||||||
|
@ -496,6 +497,7 @@ our $InitAttribute = qr{$InitAttributeData|$InitAttributeConst|$InitAttributeIni
|
||||||
# We need \b after 'init' otherwise 'initconst' will cause a false positive in a check
|
# We need \b after 'init' otherwise 'initconst' will cause a false positive in a check
|
||||||
our $Attribute = qr{
|
our $Attribute = qr{
|
||||||
const|
|
const|
|
||||||
|
volatile|
|
||||||
__percpu|
|
__percpu|
|
||||||
__nocast|
|
__nocast|
|
||||||
__safe|
|
__safe|
|
||||||
|
@ -512,12 +514,14 @@ our $Attribute = qr{
|
||||||
__noclone|
|
__noclone|
|
||||||
__deprecated|
|
__deprecated|
|
||||||
__read_mostly|
|
__read_mostly|
|
||||||
|
__ro_after_init|
|
||||||
__kprobes|
|
__kprobes|
|
||||||
$InitAttribute|
|
$InitAttribute|
|
||||||
____cacheline_aligned|
|
____cacheline_aligned|
|
||||||
____cacheline_aligned_in_smp|
|
____cacheline_aligned_in_smp|
|
||||||
____cacheline_internodealigned_in_smp|
|
____cacheline_internodealigned_in_smp|
|
||||||
__weak
|
__weak|
|
||||||
|
__alloc_size\s*\(\s*\d+\s*(?:,\s*\d+\s*)?\)
|
||||||
}x;
|
}x;
|
||||||
our $Modifier;
|
our $Modifier;
|
||||||
our $Inline = qr{inline|__always_inline|noinline|__inline|__inline__};
|
our $Inline = qr{inline|__always_inline|noinline|__inline|__inline__};
|
||||||
|
@ -529,7 +533,7 @@ our $Binary = qr{(?i)0b[01]+$Int_type?};
|
||||||
our $Hex = qr{(?i)0x[0-9a-f]+$Int_type?};
|
our $Hex = qr{(?i)0x[0-9a-f]+$Int_type?};
|
||||||
our $Int = qr{[0-9]+$Int_type?};
|
our $Int = qr{[0-9]+$Int_type?};
|
||||||
our $Octal = qr{0[0-7]+$Int_type?};
|
our $Octal = qr{0[0-7]+$Int_type?};
|
||||||
our $String = qr{"[X\t]*"};
|
our $String = qr{(?:\b[Lu])?"[X\t]*"};
|
||||||
our $Float_hex = qr{(?i)0x[0-9a-f]+p-?[0-9]+[fl]?};
|
our $Float_hex = qr{(?i)0x[0-9a-f]+p-?[0-9]+[fl]?};
|
||||||
our $Float_dec = qr{(?i)(?:[0-9]+\.[0-9]*|[0-9]*\.[0-9]+)(?:e-?[0-9]+)?[fl]?};
|
our $Float_dec = qr{(?i)(?:[0-9]+\.[0-9]*|[0-9]*\.[0-9]+)(?:e-?[0-9]+)?[fl]?};
|
||||||
our $Float_int = qr{(?i)[0-9]+e-?[0-9]+[fl]?};
|
our $Float_int = qr{(?i)[0-9]+e-?[0-9]+[fl]?};
|
||||||
|
@ -861,12 +865,12 @@ if (show_type("CONST_STRUCT")) {
|
||||||
or warn "No structs that should be const will be found - file '$conststructsfile': $!\n";
|
or warn "No structs that should be const will be found - file '$conststructsfile': $!\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
my $typeOtherTypedefs = "";
|
if (defined($typedefsfile)) {
|
||||||
if (length($typedefsfile)) {
|
my $typeOtherTypedefs;
|
||||||
read_words(\$typeOtherTypedefs, $typedefsfile)
|
read_words(\$typeOtherTypedefs, $typedefsfile)
|
||||||
or warn "No additional types will be considered - file '$typedefsfile': $!\n";
|
or warn "No additional types will be considered - file '$typedefsfile': $!\n";
|
||||||
|
$typeTypedefs .= '|' . $typeOtherTypedefs if (defined $typeOtherTypedefs);
|
||||||
}
|
}
|
||||||
$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)";
|
||||||
|
@ -905,12 +909,12 @@ sub build_types {
|
||||||
}x;
|
}x;
|
||||||
$Type = qr{
|
$Type = qr{
|
||||||
$NonptrType
|
$NonptrType
|
||||||
(?:(?:\s|\*|\[\])+\s*const|(?:\s|\*\s*(?:const\s*)?|\[\])+|(?:\s*\[\s*\])+)?
|
(?:(?:\s|\*|\[\])+\s*const|(?:\s|\*\s*(?:const\s*)?|\[\])+|(?:\s*\[\s*\])+){0,4}
|
||||||
(?:\s+$Inline|\s+$Modifier)*
|
(?:\s+$Inline|\s+$Modifier)*
|
||||||
}x;
|
}x;
|
||||||
$TypeMisordered = qr{
|
$TypeMisordered = qr{
|
||||||
$NonptrTypeMisordered
|
$NonptrTypeMisordered
|
||||||
(?:(?:\s|\*|\[\])+\s*const|(?:\s|\*\s*(?:const\s*)?|\[\])+|(?:\s*\[\s*\])+)?
|
(?:(?:\s|\*|\[\])+\s*const|(?:\s|\*\s*(?:const\s*)?|\[\])+|(?:\s*\[\s*\])+){0,4}
|
||||||
(?:\s+$Inline|\s+$Modifier)*
|
(?:\s+$Inline|\s+$Modifier)*
|
||||||
}x;
|
}x;
|
||||||
$Declare = qr{(?:$Storage\s+(?:$Inline\s+)?)?$Type};
|
$Declare = qr{(?:$Storage\s+(?:$Inline\s+)?)?$Type};
|
||||||
|
@ -931,7 +935,6 @@ 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+)?[HLP]?LIST_HEAD\s*\(|
|
(?:$Storage\s+)?[HLP]?LIST_HEAD\s*\(|
|
||||||
(?:$Storage\s+)?${Type}\s+uninitialized_var\s*\(|
|
|
||||||
(?:SKCIPHER_REQUEST|SHASH_DESC|AHASH_REQUEST)_ON_STACK\s*\(
|
(?:SKCIPHER_REQUEST|SHASH_DESC|AHASH_REQUEST)_ON_STACK\s*\(
|
||||||
)};
|
)};
|
||||||
|
|
||||||
|
@ -1061,7 +1064,7 @@ sub git_commit_info {
|
||||||
|
|
||||||
return ($id, $desc) if ($#lines < 0);
|
return ($id, $desc) if ($#lines < 0);
|
||||||
|
|
||||||
if ($lines[0] =~ /^error: short SHA1 $commit is ambiguous\./) {
|
if ($lines[0] =~ /^error: short SHA1 $commit is ambiguous/) {
|
||||||
# Maybe one day convert this block of bash into something that returns
|
# Maybe one day convert this block of bash into something that returns
|
||||||
# all matching commit ids, but it's very slow...
|
# all matching commit ids, but it's very slow...
|
||||||
#
|
#
|
||||||
|
@ -1071,7 +1074,8 @@ sub git_commit_info {
|
||||||
# git log --format='%H %s' -1 $line |
|
# git log --format='%H %s' -1 $line |
|
||||||
# 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\./ ||
|
||||||
|
$lines[0] =~ /^fatal: bad object $commit/) {
|
||||||
$id = undef;
|
$id = undef;
|
||||||
} else {
|
} else {
|
||||||
$id = substr($lines[0], 0, 12);
|
$id = substr($lines[0], 0, 12);
|
||||||
|
@ -1333,7 +1337,7 @@ sub copy_spacing {
|
||||||
sub line_stats {
|
sub line_stats {
|
||||||
my ($line) = @_;
|
my ($line) = @_;
|
||||||
|
|
||||||
# Drop the diff line leader
|
# Drop the diff line leader and expand tabs
|
||||||
$line =~ s/^.//;
|
$line =~ s/^.//;
|
||||||
|
|
||||||
# Treat labels like whitespace when counting indentation
|
# Treat labels like whitespace when counting indentation
|
||||||
|
@ -1745,8 +1749,16 @@ sub ctx_statement_level {
|
||||||
sub ctx_locate_comment {
|
sub ctx_locate_comment {
|
||||||
my ($first_line, $end_line) = @_;
|
my ($first_line, $end_line) = @_;
|
||||||
|
|
||||||
|
# If c99 comment on the current line, or the line before or after
|
||||||
|
my ($current_comment) = ($rawlines[$end_line - 1] =~ m@^\+.*(//.*$)@);
|
||||||
|
return $current_comment if (defined $current_comment);
|
||||||
|
($current_comment) = ($rawlines[$end_line - 2] =~ m@^[\+ ].*(//.*$)@);
|
||||||
|
return $current_comment if (defined $current_comment);
|
||||||
|
($current_comment) = ($rawlines[$end_line] =~ m@^[\+ ].*(//.*$)@);
|
||||||
|
return $current_comment if (defined $current_comment);
|
||||||
|
|
||||||
# Catch a comment on the end of the line itself.
|
# Catch a comment on the end of the line itself.
|
||||||
my ($current_comment) = ($rawlines[$end_line - 1] =~ m@.*(/\*.*\*/)\s*(?:\\\s*)?$@);
|
($current_comment) = ($rawlines[$end_line - 1] =~ m@.*(/\*.*\*/)\s*(?:\\\s*)?$@);
|
||||||
return $current_comment if (defined $current_comment);
|
return $current_comment if (defined $current_comment);
|
||||||
|
|
||||||
# Look through the context and try and figure out if there is a
|
# Look through the context and try and figure out if there is a
|
||||||
|
@ -2429,6 +2441,7 @@ sub process {
|
||||||
my $in_commit_log = 0; #Scanning lines before patch
|
my $in_commit_log = 0; #Scanning lines before patch
|
||||||
my $has_commit_log = 0; #Encountered lines before patch
|
my $has_commit_log = 0; #Encountered lines before patch
|
||||||
my $commit_log_possible_stack_dump = 0;
|
my $commit_log_possible_stack_dump = 0;
|
||||||
|
my $commit_log_long_line = 0;
|
||||||
my $commit_log_has_diff = 0;
|
my $commit_log_has_diff = 0;
|
||||||
my $reported_maintainer_file = 0;
|
my $reported_maintainer_file = 0;
|
||||||
my $non_utf8_charset = 0;
|
my $non_utf8_charset = 0;
|
||||||
|
@ -2698,8 +2711,8 @@ sub process {
|
||||||
|
|
||||||
# Check if the commit log has what seems like a diff which can confuse patch
|
# Check if the commit log has what seems like a diff which can confuse patch
|
||||||
if ($in_commit_log && !$commit_log_has_diff &&
|
if ($in_commit_log && !$commit_log_has_diff &&
|
||||||
(($line =~ m@^\s+diff\b.*a/[\w/]+@ &&
|
(($line =~ m@^\s+diff\b.*a/([\w/]+)@ &&
|
||||||
$line =~ m@^\s+diff\b.*a/([\w/]+)\s+b/$1\b@) ||
|
$line =~ m@^\s+diff\b.*a/[\w/]+\s+b/$1\b@) ||
|
||||||
$line =~ m@^\s*(?:\-\-\-\s+a/|\+\+\+\s+b/)@ ||
|
$line =~ m@^\s*(?:\-\-\-\s+a/|\+\+\+\s+b/)@ ||
|
||||||
$line =~ m/^\s*\@\@ \-\d+,\d+ \+\d+,\d+ \@\@/)) {
|
$line =~ m/^\s*\@\@ \-\d+,\d+ \+\d+,\d+ \@\@/)) {
|
||||||
ERROR("DIFF_IN_COMMIT_MSG",
|
ERROR("DIFF_IN_COMMIT_MSG",
|
||||||
|
@ -2817,8 +2830,10 @@ sub process {
|
||||||
($line =~ /^\s*(?:WARNING:|BUG:)/ ||
|
($line =~ /^\s*(?:WARNING:|BUG:)/ ||
|
||||||
$line =~ /^\s*\[\s*\d+\.\d{6,6}\s*\]/ ||
|
$line =~ /^\s*\[\s*\d+\.\d{6,6}\s*\]/ ||
|
||||||
# timestamp
|
# timestamp
|
||||||
$line =~ /^\s*\[\<[0-9a-fA-F]{8,}\>\]/)) {
|
$line =~ /^\s*\[\<[0-9a-fA-F]{8,}\>\]/) ||
|
||||||
# stack dump address
|
$line =~ /^(?:\s+\w+:\s+[0-9a-fA-F]+){3,3}/ ||
|
||||||
|
$line =~ /^\s*\#\d+\s*\[[0-9a-fA-F]+\]\s*\w+ at [0-9a-fA-F]+/) {
|
||||||
|
# stack dump address styles
|
||||||
$commit_log_possible_stack_dump = 1;
|
$commit_log_possible_stack_dump = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2834,6 +2849,7 @@ sub process {
|
||||||
$commit_log_possible_stack_dump)) {
|
$commit_log_possible_stack_dump)) {
|
||||||
WARN("COMMIT_LOG_LONG_LINE",
|
WARN("COMMIT_LOG_LONG_LINE",
|
||||||
"Possible unwrapped commit description (prefer a maximum 72 chars per line)\n" . $herecurr);
|
"Possible unwrapped commit description (prefer a maximum 72 chars per line)\n" . $herecurr);
|
||||||
|
$commit_log_long_line = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
# coreboot: The line subject limit is 65
|
# coreboot: The line subject limit is 65
|
||||||
|
@ -2986,15 +3002,18 @@ sub process {
|
||||||
# Check for various typo / spelling mistakes
|
# Check for various typo / spelling mistakes
|
||||||
if (defined($misspellings) &&
|
if (defined($misspellings) &&
|
||||||
($in_commit_log || $line =~ /^(?:\+|Subject:)/i)) {
|
($in_commit_log || $line =~ /^(?:\+|Subject:)/i)) {
|
||||||
while ($rawline =~ /(?:^|[^a-z@])($misspellings)(?:\b|$|[^a-z@])/gi) {
|
while ($rawline =~ /(?:^|[^\w\-'`])($misspellings)(?:[^\w\-'`]|$)/gi) {
|
||||||
my $typo = $1;
|
my $typo = $1;
|
||||||
|
my $blank = copy_spacing($rawline);
|
||||||
|
my $ptr = substr($blank, 0, $-[1]) . "^" x length($typo);
|
||||||
|
my $hereptr = "$hereline$ptr\n";
|
||||||
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_level = \&WARN;
|
my $msg_level = \&WARN;
|
||||||
$msg_level = \&CHK if ($file);
|
$msg_level = \&CHK if ($file);
|
||||||
if (&{$msg_level}("TYPO_SPELLING",
|
if (&{$msg_level}("TYPO_SPELLING",
|
||||||
"'$typo' may be misspelled - perhaps '$typo_fix'?\n" . $herecurr) &&
|
"'$typo' may be misspelled - perhaps '$typo_fix'?\n" . $hereptr) &&
|
||||||
$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/;
|
||||||
}
|
}
|
||||||
|
@ -3581,12 +3600,13 @@ sub process {
|
||||||
}
|
}
|
||||||
|
|
||||||
# check indentation of a line with a break;
|
# check indentation of a line with a break;
|
||||||
# if the previous line is a goto or return and is indented the same # of tabs
|
# if the previous line is a goto, return or break
|
||||||
|
# and is indented the same # of tabs
|
||||||
if ($sline =~ /^\+([\t]+)break\s*;\s*$/) {
|
if ($sline =~ /^\+([\t]+)break\s*;\s*$/) {
|
||||||
my $tabs = $1;
|
my $tabs = $1;
|
||||||
if ($prevline =~ /^\+$tabs(?:goto|return)\b/) {
|
if ($prevline =~ /^\+$tabs(?:goto|return|break)\b/) {
|
||||||
WARN("UNNECESSARY_BREAK",
|
WARN("UNNECESSARY_BREAK",
|
||||||
"break is not useful after a goto or return\n" . $hereprev);
|
"break is not useful after a $1\n" . $hereprev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4035,6 +4055,7 @@ sub process {
|
||||||
# XXX(foo);
|
# XXX(foo);
|
||||||
# EXPORT_SYMBOL(something_foo);
|
# EXPORT_SYMBOL(something_foo);
|
||||||
my $name = $1;
|
my $name = $1;
|
||||||
|
$name =~ s/^\s*($Ident).*/$1/;
|
||||||
if ($stat =~ /^(?:.\s*}\s*\n)?.([A-Z_]+)\s*\(\s*($Ident)/ &&
|
if ($stat =~ /^(?:.\s*}\s*\n)?.([A-Z_]+)\s*\(\s*($Ident)/ &&
|
||||||
$name =~ /^${Ident}_$2/) {
|
$name =~ /^${Ident}_$2/) {
|
||||||
#print "FOO C name<$name>\n";
|
#print "FOO C name<$name>\n";
|
||||||
|
@ -4139,7 +4160,7 @@ sub process {
|
||||||
}
|
}
|
||||||
|
|
||||||
# check for function declarations without arguments like "int foo()"
|
# check for function declarations without arguments like "int foo()"
|
||||||
if ($line =~ /(\b$Type\s+$Ident)\s*\(\s*\)/) {
|
if ($line =~ /(\b$Type\s*$Ident)\s*\(\s*\)/) {
|
||||||
if (ERROR("FUNCTION_WITHOUT_ARGS",
|
if (ERROR("FUNCTION_WITHOUT_ARGS",
|
||||||
"Bad function definition - $1() should probably be $1(void)\n" . $herecurr) &&
|
"Bad function definition - $1() should probably be $1(void)\n" . $herecurr) &&
|
||||||
$fix) {
|
$fix) {
|
||||||
|
@ -4287,7 +4308,7 @@ sub process {
|
||||||
$fix) {
|
$fix) {
|
||||||
fix_delete_line($fixlinenr, $rawline);
|
fix_delete_line($fixlinenr, $rawline);
|
||||||
my $fixed_line = $rawline;
|
my $fixed_line = $rawline;
|
||||||
$fixed_line =~ /(^..*$Type\s*$Ident\(.*\)\s*){(.*)$/;
|
$fixed_line =~ /(^..*$Type\s*$Ident\(.*\)\s*)\{(.*)$/;
|
||||||
my $line1 = $1;
|
my $line1 = $1;
|
||||||
my $line2 = $2;
|
my $line2 = $2;
|
||||||
fix_insert_line($fixlinenr, ltrim($line1));
|
fix_insert_line($fixlinenr, ltrim($line1));
|
||||||
|
@ -4795,12 +4816,12 @@ sub process {
|
||||||
|
|
||||||
#need space before brace following if, while, etc
|
#need space before brace following if, while, etc
|
||||||
if (($line =~ /\(.*\)\{/ && $line !~ /\($Type\)\{/) ||
|
if (($line =~ /\(.*\)\{/ && $line !~ /\($Type\)\{/) ||
|
||||||
$line =~ /do\{/) {
|
$line =~ /\b(?:else|do)\{/) {
|
||||||
if (ERROR("SPACING",
|
if (ERROR("SPACING",
|
||||||
"space required before the open brace '{'\n" . $herecurr) &&
|
"space required before the open brace '{'\n" . $herecurr) &&
|
||||||
$fix) {
|
$fix) {
|
||||||
#coreboot - Open braces must be escaped in regex
|
#coreboot - Open braces must be escaped in regex
|
||||||
$fixed[$fixlinenr] =~ s/^(\+.*(?:do|\)))\{/$1 \{/;
|
$fixed[$fixlinenr] =~ s/^(\+.*(?:do|else|\)))\{/$1 \{/;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4814,7 +4835,7 @@ sub process {
|
||||||
|
|
||||||
# closing brace should have a space following it when it has anything
|
# closing brace should have a space following it when it has anything
|
||||||
# on the line
|
# on the line
|
||||||
if ($line =~ /}(?!(?:,|;|\)))\S/) {
|
if ($line =~ /}(?!(?:,|;|\)|\}))\S/) {
|
||||||
if (ERROR("SPACING",
|
if (ERROR("SPACING",
|
||||||
"space required after that close brace '}'\n" . $herecurr) &&
|
"space required after that close brace '}'\n" . $herecurr) &&
|
||||||
$fix) {
|
$fix) {
|
||||||
|
@ -4914,9 +4935,13 @@ sub process {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#goto labels aren't indented, allow a single space however
|
# check that goto labels aren't indented (allow a single space indentation)
|
||||||
if ($line=~/^.\s+[A-Za-z\d_]+:(?![0-9]+)/ and
|
# and ignore bitfield definitions like foo:1
|
||||||
!($line=~/^. [A-Za-z\d_]+:/) and !($line=~/^.\s+default:/)) {
|
# Strictly, labels can have whitespace after the identifier and before the :
|
||||||
|
# but this is not allowed here as many ?: uses would appear to be labels
|
||||||
|
if ($sline =~ /^.\s+[A-Za-z_][A-Za-z\d_]*:(?!\s*\d+)/ &&
|
||||||
|
$sline !~ /^. [A-Za-z\d_][A-Za-z\d_]*:/ &&
|
||||||
|
$sline !~ /^.\s+default:/) {
|
||||||
if (WARN("INDENTED_LABEL",
|
if (WARN("INDENTED_LABEL",
|
||||||
"labels should not be indented\n" . $herecurr) &&
|
"labels should not be indented\n" . $herecurr) &&
|
||||||
$fix) {
|
$fix) {
|
||||||
|
@ -5180,8 +5205,9 @@ sub process {
|
||||||
$var =~ /[A-Z][a-z]|[a-z][A-Z]/ &&
|
$var =~ /[A-Z][a-z]|[a-z][A-Z]/ &&
|
||||||
#Ignore Page<foo> variants
|
#Ignore Page<foo> variants
|
||||||
$var !~ /^(?:Clear|Set|TestClear|TestSet|)Page[A-Z]/ &&
|
$var !~ /^(?:Clear|Set|TestClear|TestSet|)Page[A-Z]/ &&
|
||||||
#Ignore SI style variants like nS, mV and dB (ie: max_uV, regulator_min_uA_show)
|
#Ignore SI style variants like nS, mV and dB
|
||||||
$var !~ /^(?:[a-z_]*?)_?[a-z][A-Z](?:_[a-z_]+)?$/ &&
|
#(ie: max_uV, regulator_min_uA_show, RANGE_mA_VALUE)
|
||||||
|
$var !~ /^(?:[a-z0-9_]*|[A-Z0-9_]*)?_?[a-z][A-Z](?:_[a-z0-9_]+|_[A-Z0-9_]+)?$/ &&
|
||||||
#Ignore some three character SI units explicitly, like MiB and KHz
|
#Ignore some three character SI units explicitly, like MiB and KHz
|
||||||
$var !~ /^(?:[a-z_]*?)_?(?:[KMGT]iB|[KMGT]?Hz)(?:_[a-z_]+)?$/) {
|
$var !~ /^(?:[a-z_]*?)_?(?:[KMGT]iB|[KMGT]?Hz)(?:_[a-z_]+)?$/) {
|
||||||
while ($var =~ m{($Ident)}g) {
|
while ($var =~ m{($Ident)}g) {
|
||||||
|
@ -5262,6 +5288,7 @@ sub process {
|
||||||
if (defined $define_args && $define_args ne "") {
|
if (defined $define_args && $define_args ne "") {
|
||||||
$define_args = substr($define_args, 1, length($define_args) - 2);
|
$define_args = substr($define_args, 1, length($define_args) - 2);
|
||||||
$define_args =~ s/\s*//g;
|
$define_args =~ s/\s*//g;
|
||||||
|
$define_args =~ s/\\\+?//g;
|
||||||
@def_args = split(",", $define_args);
|
@def_args = split(",", $define_args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5271,9 +5298,9 @@ sub process {
|
||||||
$dstat =~ s/\s*$//s;
|
$dstat =~ s/\s*$//s;
|
||||||
|
|
||||||
# Flatten any parentheses and braces
|
# Flatten any parentheses and braces
|
||||||
while ($dstat =~ s/\([^\(\)]*\)/1/ ||
|
while ($dstat =~ s/\([^\(\)]*\)/1u/ ||
|
||||||
$dstat =~ s/\{[^\{\}]*\}/1/ ||
|
$dstat =~ s/\{[^\{\}]*\}/1u/ ||
|
||||||
$dstat =~ s/.\[[^\[\]]*\]/1/)
|
$dstat =~ s/.\[[^\[\]]*\]/1u/)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5314,6 +5341,7 @@ sub process {
|
||||||
$dstat !~ /^\.$Ident\s*=/ && # .foo =
|
$dstat !~ /^\.$Ident\s*=/ && # .foo =
|
||||||
$dstat !~ /^(?:\#\s*$Ident|\#\s*$Constant)\s*$/ && # stringification #foo
|
$dstat !~ /^(?:\#\s*$Ident|\#\s*$Constant)\s*$/ && # stringification #foo
|
||||||
$dstat !~ /^do\s*$Constant\s*while\s*$Constant;?$/ && # do {...} while (...); // do {...} while (...)
|
$dstat !~ /^do\s*$Constant\s*while\s*$Constant;?$/ && # do {...} while (...); // do {...} while (...)
|
||||||
|
$dstat !~ /^while\s*$Constant\s*$Constant\s*$/ && # while (...) {...}
|
||||||
$dstat !~ /^for\s*$Constant$/ && # for (...)
|
$dstat !~ /^for\s*$Constant$/ && # for (...)
|
||||||
$dstat !~ /^for\s*$Constant\s+(?:$Ident|-?$Constant)$/ && # for (...) bar()
|
$dstat !~ /^for\s*$Constant\s+(?:$Ident|-?$Constant)$/ && # for (...) bar()
|
||||||
$dstat !~ /^do\s*{/ && # do {...
|
$dstat !~ /^do\s*{/ && # do {...
|
||||||
|
@ -5355,7 +5383,7 @@ sub process {
|
||||||
next if ($arg =~ /\.\.\./);
|
next if ($arg =~ /\.\.\./);
|
||||||
next if ($arg =~ /^type$/i);
|
next if ($arg =~ /^type$/i);
|
||||||
my $tmp_stmt = $define_stmt;
|
my $tmp_stmt = $define_stmt;
|
||||||
$tmp_stmt =~ s/\b(typeof|__typeof__|__builtin\w+|typecheck\s*\(\s*$Type\s*,|\#+)\s*\(*\s*$arg\s*\)*\b//g;
|
$tmp_stmt =~ s/\b(__must_be_array|offsetof|sizeof|sizeof_field|__stringify|typeof|__typeof__|__builtin\w+|typecheck\s*\(\s*$Type\s*,|\#+)\s*\(*\s*$arg\s*\)*\b//g;
|
||||||
$tmp_stmt =~ s/\#+\s*$arg\b//g;
|
$tmp_stmt =~ s/\#+\s*$arg\b//g;
|
||||||
$tmp_stmt =~ s/\b$arg\s*\#\#//g;
|
$tmp_stmt =~ s/\b$arg\s*\#\#//g;
|
||||||
my $use_cnt = () = $tmp_stmt =~ /\b$arg\b/g;
|
my $use_cnt = () = $tmp_stmt =~ /\b$arg\b/g;
|
||||||
|
@ -5687,9 +5715,14 @@ sub process {
|
||||||
|
|
||||||
# warn about #if 0
|
# warn about #if 0
|
||||||
if ($line =~ /^.\s*\#\s*if\s+0\b/) {
|
if ($line =~ /^.\s*\#\s*if\s+0\b/) {
|
||||||
CHK("REDUNDANT_CODE",
|
WARN("IF_0",
|
||||||
"if this code is redundant consider removing it\n" .
|
"Consider removing the code enclosed by this #if 0 and its #endif\n" . $herecurr);
|
||||||
$herecurr);
|
}
|
||||||
|
|
||||||
|
# warn about #if 1
|
||||||
|
if ($line =~ /^.\s*\#\s*if\s+1\b/) {
|
||||||
|
WARN("IF_1",
|
||||||
|
"Consider removing the #if 1 and its #endif\n" . $herecurr);
|
||||||
}
|
}
|
||||||
|
|
||||||
# check for needless "if (<foo>) fn(<foo>)" uses
|
# check for needless "if (<foo>) fn(<foo>)" uses
|
||||||
|
@ -5917,8 +5950,7 @@ sub process {
|
||||||
my $barriers = qr{
|
my $barriers = qr{
|
||||||
mb|
|
mb|
|
||||||
rmb|
|
rmb|
|
||||||
wmb|
|
wmb
|
||||||
read_barrier_depends
|
|
||||||
}x;
|
}x;
|
||||||
my $barrier_stems = qr{
|
my $barrier_stems = qr{
|
||||||
mb__before_atomic|
|
mb__before_atomic|
|
||||||
|
@ -5959,10 +5991,12 @@ sub process {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# check for smp_read_barrier_depends and read_barrier_depends
|
# check for data_race without a comment.
|
||||||
if (!$file && $line =~ /\b(smp_|)read_barrier_depends\s*\(/) {
|
if ($line =~ /\bdata_race\s*\(/) {
|
||||||
WARN("READ_BARRIER_DEPENDS",
|
if (!ctx_has_comment($first_line, $linenr)) {
|
||||||
"$1read_barrier_depends should only be used in READ_ONCE or DEC Alpha code\n" . $herecurr);
|
WARN("DATA_RACE",
|
||||||
|
"data_race without comment\n" . $herecurr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# check of hardware specific defines
|
# check of hardware specific defines
|
||||||
|
@ -6327,8 +6361,7 @@ sub process {
|
||||||
if (defined $cond) {
|
if (defined $cond) {
|
||||||
substr($s, 0, length($cond), '');
|
substr($s, 0, length($cond), '');
|
||||||
}
|
}
|
||||||
if ($s =~ /^\s*;/ &&
|
if ($s =~ /^\s*;/)
|
||||||
$function_name ne 'uninitialized_var')
|
|
||||||
{
|
{
|
||||||
WARN("AVOID_EXTERNS",
|
WARN("AVOID_EXTERNS",
|
||||||
"externs should be avoided in .c files\n" . $herecurr);
|
"externs should be avoided in .c files\n" . $herecurr);
|
||||||
|
@ -6402,7 +6435,7 @@ sub process {
|
||||||
# alloc style
|
# alloc style
|
||||||
# p = alloc(sizeof(struct foo), ...) should be p = alloc(sizeof(*p), ...)
|
# p = alloc(sizeof(struct foo), ...) should be p = alloc(sizeof(*p), ...)
|
||||||
if ($perl_version_ok &&
|
if ($perl_version_ok &&
|
||||||
$line =~ /\b($Lval)\s*\=\s*(?:$balanced_parens)?\s*([kv][mz]alloc(?:_node)?)\s*\(\s*(sizeof\s*\(\s*struct\s+$Lval\s*\))/) {
|
$line =~ /\b($Lval)\s*\=\s*(?:$balanced_parens)?\s*((?:kv|k|v)[mz]alloc(?:_node)?)\s*\(\s*(sizeof\s*\(\s*struct\s+$Lval\s*\))/) {
|
||||||
CHK("ALLOC_SIZEOF_STRUCT",
|
CHK("ALLOC_SIZEOF_STRUCT",
|
||||||
"Prefer $3(sizeof(*$1)...) over $3($4...)\n" . $herecurr);
|
"Prefer $3(sizeof(*$1)...) over $3($4...)\n" . $herecurr);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue