mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Eilon Greenstein" <eilong@broadcom.com>
To: "Joe Perches" <joe@perches.com>, "Andy Whitcroft" <apw@canonical.com>
Cc: "David Rientjes" <rientjes@google.com>,
	linux-kernel@vger.kernel.org, netdev <netdev@vger.kernel.org>
Subject: Re: [PATCH v2] checkpatch: add double empty line check
Date: Wed, 21 Nov 2012 11:42:01 +0200	[thread overview]
Message-ID: <1353490921.6559.40.camel@lb-tlvb-eilong.il.broadcom.com> (raw)
In-Reply-To: <1353454874.17819.41.camel@joe-AO722>

On Tue, 2012-11-20 at 15:41 -0800, Joe Perches wrote:
> On Tue, 2012-11-20 at 23:19 +0000, Andy Whitcroft wrote:
> > On Tue, Nov 20, 2012 at 01:58:48PM -0800, Joe Perches wrote:
> > 
> > > +# check for multiple blank lines, warn only on the second one in a block
> > > +		if ($rawline =~ /^.\s*$/ &&
> > > +		    $prevrawline =~ /^.\s*$/ &&
> > > +		    $linenr != $last_blank_linenr + 1) {
> > > +			CHK("DOUBLE_EMPTY_LINE",
> > > +			    "One blank line separating blocks is generally sufficient\n" . $herecurr);
> > > +			$last_blank_linenr = $linenr;
> > > +		}
> > > +
> > >  # check for line continuations in quoted strings with odd counts of "
> > >  		if ($rawline =~ /\\$/ && $rawline =~ tr/"/"/ % 2) {
> > >  			WARN("LINE_CONTINUATIONS",
> > 
> > Pretty sure that will fail with combination which have removed lines.
> 
> Not as far as I can tell.
> Deleted lines followed by inserted lines seem
> to work OK.
> 
> This check is located after the test that ensures
> the current $line/$rawline is an insertion.
> 

But you do not look at the next line, so you will miss something like
that:

diff --git a/test.c b/test.c
index e3c46d4..e1c6ffc 100644
--- a/test.c
+++ b/test.c
@@ -15,7 +15,8 @@
  * something
  * something
  * something
- * next line was already empty */
+ * next line was already empty, but I'm adding another one now*/
+
 
 /* something else
  * something else

> > I have a version here which I am testing with the combinations I have
> > isolated to far ...
> 
> Enjoy.
> Can you please test my proposal against those combinations too?
> 

The way I see it, we have to handle the following cases:
a. The patch adds more than a single consecutive empty line - easy
enough, the only "problem" here is to warn only once and there are many
ways to do that.
b. The patch is adding a new empty line after an existing empty line -
for that, we must check the previous line.
c. The patch is adding a new empty line before an existing empty line -
for that, we must check the next line. If we are already checking the
next line, we can tell if this is the last empty line added and
therefore do not need to save anything in order to warn only once per
block.

My version of the patch addresses all 3 cases above, and I do not see
how we can do it without looking at the next line and the previous line
- so I think it is a valid approach.

The only identified down side is that it might fail to warn about double
empty lines if we will find a diff utility that will add the deleted
lines after the inserted lines - but even in that case, it will not
generate any annoying false positives and no other perl warnings. To
address this issue, I can add a loop that will look forward if the next
line after a newly added empty line is a deleted line, but I think this
is excessive and I will only be able to test it on manually generated
files since the diff utilities I'm familiar with are behaving nicely and
delete before adding.

Anyway, I'm looking forward for your version.

Thanks,
Eilon



  reply	other threads:[~2012-11-21  9:42 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-17 11:17 Eilon Greenstein
2012-11-20 11:52 ` Andy Whitcroft
2012-11-20 14:27   ` Eilon Greenstein
2012-11-20 14:43     ` Andy Whitcroft
2012-11-20 15:07       ` Eilon Greenstein
2012-11-20 15:44         ` Andy Whitcroft
2012-11-20 16:06           ` Eilon Greenstein
2012-11-20 16:14             ` Andy Whitcroft
2012-11-20 16:22               ` Eilon Greenstein
2012-11-20 16:36                 ` Andy Whitcroft
2012-11-20 16:36               ` Andy Whitcroft
2012-11-20 19:10                 ` Eilon Greenstein
2012-11-20 19:32                   ` Andy Whitcroft
2012-11-20 20:11                     ` Andy Whitcroft
2012-11-20 20:26                       ` Eilon Greenstein
2012-11-20 21:58   ` Joe Perches
2012-11-20 23:19     ` Andy Whitcroft
2012-11-20 23:41       ` Joe Perches
2012-11-21  9:42         ` Eilon Greenstein [this message]
2012-11-21 15:01           ` Joe Perches
2012-11-21 15:45             ` Eilon Greenstein

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1353490921.6559.40.camel@lb-tlvb-eilong.il.broadcom.com \
    --to=eilong@broadcom.com \
    --cc=apw@canonical.com \
    --cc=joe@perches.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=rientjes@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®