This email originated from an IP that might not be authorized by the domain it
was sent from.
Do not click links or open attachments unless it is an email you expected to
receive.
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