checkpatch: improve tests for multiple line function definitions
Add a block that identifies multiple line function definitions. Save the function name into $context_function to improve the embedded function name test. Look for misplaced open brace on the function definition. Emit an OPEN_BRACE error when the function definition is similar to void foo(int arg1, int arg2) { Miscellanea: o Remove the $realfile test in function declaration w/o named arguments test o Comment the function declaration w/o named arguments test Link: http://lkml.kernel.org/r/de620ed6ebab75fdfa323741ada2134a0f545892.1496835238.git.joe@perches.com Signed-off-by: Joe Perches <joe@perches.com> Tested-by: David Kershner <david.kershner@unisys.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
948b133a1b
commit
a0ad75964e
@ -5899,7 +5899,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);
|
||||||
@ -5912,6 +5913,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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user