[Qemu-devel] [PATCH v2] scripts/checkpatch.pl: Bug fix

Su Hang posted 1 patch 6 years, 2 months ago
Failed in applying to current master (apply log)
There is a newer version of this series
scripts/checkpatch.pl | 21 +++++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
[Qemu-devel] [PATCH v2] scripts/checkpatch.pl: Bug fix
Posted by Su Hang 6 years, 2 months ago
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(-)

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);
 				}
 			}
--
2.7.4


Re: [Qemu-devel] [PATCH v2] scripts/checkpatch.pl: Bug fix
Posted by Fam Zheng 6 years, 2 months ago
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

Re: [Qemu-devel] [PATCH v2] scripts/checkpatch.pl: Bug fix
Posted by Su Hang 6 years, 2 months ago
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
Re: [Qemu-devel] [PATCH v2] scripts/checkpatch.pl: Bug fix
Posted by Fam Zheng 6 years, 2 months ago
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

Re: [Qemu-devel] [PATCH v2] scripts/checkpatch.pl: Bug fix
Posted by Su Hang 6 years, 2 months ago
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