Argument alignment across multiple lines should match the open parenthesis. Logical continuations should be at the end of the previous line, not the start of a new line. These are not required by CodingStyle so make the tests active only when using --strict. Tested with: int foo(void) { if (foo && bar()) baz(); if (foo && bar()) baz(); foo_some_long_function(bar, baz); foo_some_long_function(bar, baz); return 0; } Signed-off-by: Joe Perches <joe@xxxxxxxxxxx> --- scripts/checkpatch.pl | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index a3b9782..629944e 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -1783,6 +1783,28 @@ sub process { "please, no space before tabs\n" . $herevet); } +# check for && or || at the start of a line + if ($rawline =~ /^\+\s*(&&|\|\|)/) { + CHK("LOGICAL_CONTINUATIONS", + "Logical continuations should be on the previous line\n" . $hereprev); + } + +# check multi-line statement indentation matches previous line + if ($prevline =~ /^\+(\t*)(if \(|$Ident\().*(\&\&|\|\||,)\s*$/ && $rawline =~ /^\+([ \t]*)/) { + $prevline =~ /^\+(\t*)(if \(|$Ident\().*(\&\&|\|\||,)\s*$/; + my $oldindent = $1; + my $if_or_func = $2; + $rawline =~ /^\+([ \t]*)/; + my $newindent = $1; + my $goodindent = $oldindent . + "\t" x (length($if_or_func) / 8) . + " " x (length($if_or_func) % 8); + if ($newindent ne "$goodindent") { + CHK("PARENTHESIS_ALIGNMENT", + "Alignment should match open parenthesis\n" . $hereprev); + } + } + # check for spaces at the beginning of a line. # Exceptions: # 1) within comments -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html