diff mbox

[v2] scripts/checkpatch.pl: Bug fix

Message ID 1521169105-32041-1-git-send-email-suhang16@mails.ucas.ac.cn (mailing list archive)
State New, archived
Headers show

Commit Message

Su Hang March 16, 2018, 2:58 a.m. UTC
checkpatch.pl stops complaining about following pattern:
"""
do {
    //do somethins;
} while (conditions);
"""

One things need to be mentioned:
Becasue `if`, `while` and `for` check have been done in this
`if` block(Line: 2356), and this block contains following statement:
""" Line: 2379
$suppress_ifbraces{$ln + $offset} = 1;
"""
So the behind block may never run:
""" Line: 2415
if (!defined $suppress_ifbraces{$linenr - 1} &&
    $line =~ /\b(if|while|for|else)\b/ &&
    $line !~ /\#\s*if/ &&
    $line !~ /\#\s*else/) {
"""
I'm not sure, please give me some advice.

(Sorry, I don't know this patch should base on which commit,
 so I generate this patch based on
 commit:fb8446d94ec7a3dc0c3a7e7da672406476f075ac,
 I choose this by `git log -2 scripts/checkpath.pl`.
 Sincerely say sorry, if I have misunderstand any meaning.)

Signed-off-by: Su Hang <suhang16@mails.ucas.ac.cn>
---
 scripts/checkpatch.pl | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

--
2.7.4

Comments

Fam Zheng March 16, 2018, 6:15 a.m. UTC | #1
On Fri, 03/16 10:58, Su Hang wrote:
> (Sorry, I don't know this patch should base on which commit,
>  so I generate this patch based on
>  commit:fb8446d94ec7a3dc0c3a7e7da672406476f075ac,
>  I choose this by `git log -2 scripts/checkpath.pl`.
>  Sincerely say sorry, if I have misunderstand any meaning.)

This should base on master. Basing on an older commit will only make it hard for
maintainers to apply it.

(Don't be sorry at all, thank you for spending your time improving QEMU!)

Fam
Su Hang March 16, 2018, 6:31 a.m. UTC | #2
Because I generate my first patch on master, it should work.

I have a little trouble understanding what Mr.Peter wants me to do,
would you please spare a little of your time and have a look at it?
It will help me. Please...

Su Hang


> -----Original Messages-----
> From: "Fam Zheng" <famz@redhat.com>
> Sent Time: 2018-03-16 14:15:20 (Friday)
> To: "Su Hang" <suhang16@mails.ucas.ac.cn>
> Cc: peter.maydell@linaro.org, eblake@redhat.com, vsementsov@virtuozzo.com, qemu-devel@nongnu.org
> Subject: Re: [Qemu-devel]  [PATCH v2] scripts/checkpatch.pl: Bug fix
> 
> On Fri, 03/16 10:58, Su Hang wrote:
> > (Sorry, I don't know this patch should base on which commit,
> >  so I generate this patch based on
> >  commit:fb8446d94ec7a3dc0c3a7e7da672406476f075ac,
> >  I choose this by `git log -2 scripts/checkpath.pl`.
> >  Sincerely say sorry, if I have misunderstand any meaning.)
> 
> This should base on master. Basing on an older commit will only make it hard for
> maintainers to apply it.
> 
> (Don't be sorry at all, thank you for spending your time improving QEMU!)
> 
> Fam
Fam Zheng March 16, 2018, 7:08 a.m. UTC | #3
On Fri, 03/16 14:31, Su Hang wrote:
> Because I generate my first patch on master, it should work.

Nope. "git am" doesn't know to resolve the conflict automatically despite it
being straightforward, unfortunately:

http://patchew.org/QEMU/1521169105-32041-1-git-send-email-suhang16@mails.ucas.ac.cn/

Fam
Su Hang March 16, 2018, 7:13 a.m. UTC | #4
Thanks for your reply!
I'm glad to understand where problem lies.

Su Hang

> -----Original Messages-----
> From: "Fam Zheng" <famz@redhat.com>
> Sent Time: 2018-03-16 15:08:19 (Friday)
> To: "Su Hang" <suhang16@mails.ucas.ac.cn>
> Cc: peter.maydell@linaro.org, vsementsov@virtuozzo.com, qemu-devel@nongnu.org
> Subject: Re: [Qemu-devel] [PATCH v2] scripts/checkpatch.pl: Bug fix
> 
> On Fri, 03/16 14:31, Su Hang wrote:
> > Because I generate my first patch on master, it should work.
> 
> Nope. "git am" doesn't know to resolve the conflict automatically despite it
> being straightforward, unfortunately:
> 
> http://patchew.org/QEMU/1521169105-32041-1-git-send-email-suhang16@mails.ucas.ac.cn/
> 
> Fam
diff mbox

Patch

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index a88af61ed4ee..d6f0747ba20a 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -2352,8 +2352,22 @@  sub process {
 			}
 		}

-# check for missing bracing round if etc
-		if ($line =~ /(^.*)\bif\b/ && $line !~ /\#\s*if/) {
+# check for missing bracing around if etc
+		if ($line =~ /(^.*)\b(?:if|while|for)\b/ &&
+			$line !~ /\#\s*if/) {
+			my $allowed = 0;
+
+			# Check the pre-context.
+			if ($line =~ /(\}.*?)$/) {
+				my $pre = $1;
+
+				if ($line !~ /else/) {
+					print "APW: ALLOWED: pre<$pre> line<$line>\n"
+						if $dbg_adv_apw;
+					$allowed = 1;
+				}
+			}
+
 			my ($level, $endln, @chunks) =
 				ctx_statement_full($linenr, $realcnt, 1);
                         if ($dbg_adv_apw) {
@@ -2362,7 +2376,6 @@  sub process {
                                 if $#chunks >= 1;
                         }
 			if ($#chunks >= 0 && $level == 0) {
-				my $allowed = 0;
 				my $seen = 0;
 				my $herectx = $here . "\n";
 				my $ln = $linenr - 1;
@@ -2406,7 +2419,7 @@  sub process {
                                             $allowed = 1;
 					}
 				}
-				if ($seen != ($#chunks + 1)) {
+				if ($seen != ($#chunks + 1) && !$allowed) {
 					ERROR("braces {} are necessary for all arms of this statement\n" . $herectx);
 				}
 			}