[PATCH] checkpatch: warn about hunks which only add blank lines
"Denis V. Lunev" <[email protected]> Fri, 31 Jul 2026 15:40:46 +0200
| Newsgroups | org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
Patches sometimes carry a hunk whose entire content is one or two added blank lines. It changes nothing, it makes the diff longer and it survives review because nobody looks twice at a blank line. The blank line itself is perfectly fine, the gratuitous hunk is not. Tally the added blank lines and the other changes of every hunk in the pre-scan loop which already walks the raw patch, and record the hunks which only add blanks. Such a hunk is then reported at the first blank line it adds, so the warning carries the usual file and line context. Signed-off-by: Denis V. Lunev <[email protected]> CC: Chao Liu <[email protected]> CC: "Daniel P. Berrange" <[email protected]> CC: "Philippe Mathieu-Daude" <[email protected]> CC: Thomas Huth <[email protected]> --- Note: this patch is sent on behalf of the yesterday finding inside IDE pull request. This should be found with a checkpatch. scripts/checkpatch.pl | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 03f35e7501..dfa9878006 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -1567,6 +1567,10 @@ sub process { my $first_line = 0; my $p1_prefix = ''; + my %blank_only_hunk; + my $hunk_first_blank = 0; + my $hunk_has_change = 0; + my $prev_values = 'E'; # suppression flags @@ -1583,6 +1587,10 @@ sub process { $line = $rawline; if ($rawline=~/^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@/) { + $blank_only_hunk{$hunk_first_blank} = 1 + if ($hunk_first_blank && !$hunk_has_change); + ($hunk_first_blank, $hunk_has_change) = (0, 0); + $realline=$1-1; if (defined $2) { $realcnt=$3+1; @@ -1633,6 +1641,13 @@ sub process { push(@lines, $line); if ($realcnt > 1) { + if ($rawline =~ /^\+\s*$/) { + $hunk_first_blank = $linenr + if (!$hunk_first_blank); + } elsif ($rawline =~ /^[-+]/) { + $hunk_has_change = 1; + } + $realcnt-- if ($line =~ /^(?:\+| |$)/); } else { $realcnt = 0; @@ -1641,6 +1656,8 @@ sub process { #print "==>$rawline\n"; #print "-->$line\n"; } + $blank_only_hunk{$hunk_first_blank} = 1 + if ($hunk_first_blank && !$hunk_has_change); $prefix = ''; @@ -1780,6 +1797,10 @@ sub process { $cnt_lines++ if ($realcnt != 0); + if ($blank_only_hunk{$linenr}) { + WARN("this hunk only adds blank lines\n" . $herecurr); + } + # Only allow Python 3 interpreter if ($realline == 1 && $line =~ /^\+#!\ *\/usr\/bin\/(?:env )?python$/) { base-commit: e1705a25aff35635c360bbaba4c2731d019a422a -- 2.53.0