[PATCH v3] scripts: checkpatch: Check multiple blank lines when deleting code

From: Alexandre Ghiti
Date: Wed Mar 06 2019 - 14:53:31 EST


By matching only current line starting with '+', we miss the case
when deleting code makes consecutive blank lines appear: this patch
then makes it possible to detect this case by also matching current
line starting with ' ', which is an already existing blank line.

Signed-off-by: Alexandre Ghiti <alex@xxxxxxxx>
---

Changes in v3 as suggested by Joe Perches:
- Do not try to fix this case
- Make this test separate from the insertion one so that warning
is more explicit

Changes in v2:
- Fix the --fix option

scripts/checkpatch.pl | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index b737ca9d7204..c0728cff292f 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -3296,7 +3296,7 @@ sub process {
}
}

-# check for multiple consecutive blank lines
+# check for multiple consecutive blank lines caused by blank line insertion
if ($prevline =~ /^[\+ ]\s*$/ &&
$line =~ /^\+\s*$/ &&
$last_blank_line != ($linenr - 1)) {
@@ -3309,6 +3309,16 @@ sub process {
$last_blank_line = $linenr;
}

+# check for multiple consecutive blank lines caused by code deletion
+ if ($prevline =~ /^[\+ ]\s*$/ &&
+ $line =~ /^ \s*$/ &&
+ $last_blank_line != ($linenr - 1)) {
+ CHK("LINE_SPACING",
+ "Avoid deleting lines that create consecutive blank lines\n" . $hereprev);
+
+ $last_blank_line = $linenr;
+ }
+
# check for missing blank lines after declarations
if ($sline =~ /^\+\s+\S/ && #Not at char 1
# actual declarations
--
2.20.1