Commit 3f7bac03 authored by Joe Perches's avatar Joe Perches Committed by Linus Torvalds

checkpatch: always warn on missing blank line after variable declaration block

Make the test system wide, modify the message too.
Signed-off-by: default avatarJoe Perches <joe@perches.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 185d566b
......@@ -397,6 +397,11 @@ foreach my $entry (@mode_permission_funcs) {
$mode_perms_search .= $entry->[0];
}
our $declaration_macros = qr{(?x:
(?:$Storage\s+)?(?:DECLARE|DEFINE)_[A-Z]+\s*\(|
(?:$Storage\s+)?LIST_HEAD\s*\(
)};
our $allowed_asm_includes = qr{(?x:
irq|
memory
......@@ -2268,18 +2273,37 @@ sub process {
}
# check for missing blank lines after declarations
if ($realfile =~ m@^(drivers/net/|net/)@ &&
$prevline =~ /^\+\s+$Declare\s+$Ident/ &&
!($prevline =~ /(?:$Compare|$Assignment|$Operators)\s*$/ ||
$prevline =~ /(?:\{\s*|\\)$/) && #extended lines
$sline =~ /^\+\s+/ && #Not at char 1
!($sline =~ /^\+\s+$Declare/ ||
$sline =~ /^\+\s+$Ident\s+$Ident/ || #eg: typedef foo
if ($sline =~ /^\+\s+\S/ && #Not at char 1
# actual declarations
($prevline =~ /^\+\s+$Declare\s*$Ident\s*[=,;:\[]/ ||
# foo bar; where foo is some local typedef or #define
$prevline =~ /^\+\s+$Ident(?:\s+|\s*\*\s*)$Ident\s*[=,;\[]/ ||
# known declaration macros
$prevline =~ /^\+\s+$declaration_macros/) &&
# for "else if" which can look like "$Ident $Ident"
!($prevline =~ /^\+\s+$c90_Keywords\b/ ||
# other possible extensions of declaration lines
$prevline =~ /(?:$Compare|$Assignment|$Operators)\s*$/ ||
# not starting a section or a macro "\" extended line
$prevline =~ /(?:\{\s*|\\)$/) &&
# looks like a declaration
!($sline =~ /^\+\s+$Declare\s*$Ident\s*[=,;:\[]/ ||
# foo bar; where foo is some local typedef or #define
$sline =~ /^\+\s+$Ident(?:\s+|\s*\*\s*)$Ident\s*[=,;\[]/ ||
# known declaration macros
$sline =~ /^\+\s+$declaration_macros/ ||
# start of struct or union or enum
$sline =~ /^\+\s+(?:union|struct|enum|typedef)\b/ ||
$sline =~ /^\+\s+(?:$|[\{\}\.\#\"\?\:\(])/ ||
$sline =~ /^\+\s+\(?\s*(?:$Compare|$Assignment|$Operators)/)) {
# start or end of block or continuation of declaration
$sline =~ /^\+\s+(?:$|[\{\}\.\#\"\?\:\(\[])/ ||
# bitfield continuation
$sline =~ /^\+\s+$Ident\s*:\s*\d+\s*[,;]/ ||
# other possible extensions of declaration lines
$sline =~ /^\+\s+\(?\s*(?:$Compare|$Assignment|$Operators)/) &&
# indentation of previous and current line are the same
(($prevline =~ /\+(\s+)\S/) && $sline =~ /^\+$1\S/)) {
WARN("SPACING",
"networking uses a blank line after declarations\n" . $hereprev);
"Missing a blank line after declarations\n" . $hereprev);
}
# check for spaces at the beginning of a line.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment