mirror of https://gitee.com/openkylin/linux.git
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);
|
||||
}
|
||||
|
||||
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 &&
|
||||
$1 ne "void") {
|
||||
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
|
||||
if ($rawline =~ /\b__setup\("([^"]*)"/) {
|
||||
my $name = $1;
|
||||
|
|
Loading…
Reference in New Issue