Messages in this thread Patch in this message | | | From | Joe Perches <> | Subject | [PATCH] checkpatch: Improve the SUSPECT_CODE_INDENT test | Date | Mon, 1 May 2017 18:00:04 -0700 |
| |
The current SUSPECT_CODE_INDENT test does not recognize several defective code style defects where code following a logical test is inappropriately indented.
Before this patch, for code like:
if (foo) bar();
checkpatch would not emit a warning.
Improve the test to warn when code after a logical test has the same indentation as the logical test.
Perform the same indentation test for "else" blocks too.
Signed-off-by: Joe Perches <joe@perches.com> --- scripts/checkpatch.pl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 5270f7948493..e5262fefe815 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -3337,7 +3337,7 @@ sub process { } # Check relative indent for conditionals and blocks. - if ($line =~ /\b(?:(?:if|while|for|(?:[a-z_]+|)for_each[a-z_]+)\s*\(|do\b)/ && $line !~ /^.\s*#/ && $line !~ /\}\s*while\s*/) { + if ($line =~ /\b(?:(?:if|while|for|(?:[a-z_]+|)for_each[a-z_]+)\s*\(|(?:do|else)\b)/ && $line !~ /^.\s*#/ && $line !~ /\}\s*while\s*/) { ($stat, $cond, $line_nr_next, $remain_next, $off_next) = ctx_statement_block($linenr, $realcnt, 0) if (!defined $stat); @@ -3429,6 +3429,8 @@ sub process { if ($check && $s ne '' && (($sindent % 8) != 0 || ($sindent < $indent) || + ($sindent == $indent && + ($s !~ /^\s*(?:\}|\{|else\b)/)) || ($sindent > $indent + 8))) { WARN("SUSPECT_CODE_INDENT", "suspect code indent for conditional statements ($indent, $sindent)\n" . $herecurr . "$stat_real\n"); -- 2.10.0.rc2.1.g053435c
| |