forked from Minki/linux
checkpatch: avoid multiple line dereferences
Code that puts a single dereferencing identifier on multiple lines like: struct_identifier->member[index]. member = <foo>; is generally hard to follow. Prefer that dereferencing identifiers be single line. Link: http://lkml.kernel.org/r/e9c191ae3f41bedc8ffd5c0fbcc5a1cec1d1d2df.1478120869.git.joe@perches.com Signed-off-by: Joe Perches <joe@perches.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
d6430f7180
commit
11ca40a0f8
@ -3440,6 +3440,18 @@ sub process {
|
||||
#ignore lines not being added
|
||||
next if ($line =~ /^[^\+]/);
|
||||
|
||||
# check for dereferences that span multiple lines
|
||||
if ($prevline =~ /^\+.*$Lval\s*(?:\.|->)\s*$/ &&
|
||||
$line =~ /^\+\s*(?!\#\s*(?!define\s+|if))\s*$Lval/) {
|
||||
$prevline =~ /($Lval\s*(?:\.|->))\s*$/;
|
||||
my $ref = $1;
|
||||
$line =~ /^.\s*($Lval)/;
|
||||
$ref .= $1;
|
||||
$ref =~ s/\s//g;
|
||||
WARN("MULTILINE_DEREFERENCE",
|
||||
"Avoid multiple line dereference - prefer '$ref'\n" . $hereprev);
|
||||
}
|
||||
|
||||
# check for declarations of signed or unsigned without int
|
||||
while ($line =~ m{\b($Declare)\s*(?!char\b|short\b|int\b|long\b)\s*($Ident)?\s*[=,;\[\)\(]}g) {
|
||||
my $type = $1;
|
||||
|
Loading…
Reference in New Issue
Block a user