2021-07-14 08:28:24

by Hamza Mahfooz

[permalink] [raw]
Subject: [PATCH] checkpatch: fix an issue regarding the git commit description style test

If we consider the output of the following command:

$ git shortlog | grep '"' | wc -l
14185

It becomes apparent that quite a number of commits have titles that,
contain at least one quotation mark and if you attempt to refer to those
commits in a new patch, checkpatch throws a false positive. This is
because, checkpatch disallows the use of quotation marks in commit titles,
only when referring to those commits in commit descriptions.

Signed-off-by: Hamza Mahfooz <[email protected]>
---
scripts/checkpatch.pl | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 461d4221e4a4..cf31e8c994d3 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -3200,20 +3200,20 @@ sub process {
$long = 1 if ($line =~ /\bcommit\s+[0-9a-f]{41,}/i);
$space = 0 if ($line =~ /\bcommit [0-9a-f]/i);
$case = 0 if ($line =~ /\b[Cc]ommit\s+[0-9a-f]{5,40}[^A-F]/);
- if ($line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("([^"]+)"\)/i) {
+ if ($line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("(.+)"\)/i) {
$orig_desc = $1;
$hasparens = 1;
} elsif ($line =~ /\bcommit\s+[0-9a-f]{5,}\s*$/i &&
defined $rawlines[$linenr] &&
- $rawlines[$linenr] =~ /^\s*\("([^"]+)"\)/) {
+ $rawlines[$linenr] =~ /^\s*\("(.+)"\)/) {
$orig_desc = $1;
$hasparens = 1;
- } elsif ($line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("[^"]+$/i &&
+ } elsif ($line =~ /\bcommit\s+[0-9a-f]{5,}\s+\(".+$/i &&
defined $rawlines[$linenr] &&
- $rawlines[$linenr] =~ /^\s*[^"]+"\)/) {
- $line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("([^"]+)$/i;
+ $rawlines[$linenr] =~ /^\s*.+"\)/) {
+ $line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("(.+)$/i;
$orig_desc = $1;
- $rawlines[$linenr] =~ /^\s*([^"]+)"\)/;
+ $rawlines[$linenr] =~ /^\s*(.+)"\)/;
$orig_desc .= " " . $1;
$hasparens = 1;
}
--
2.32.0


2021-08-13 11:54:59

by Hamza Mahfooz

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: fix an issue regarding the git commit description style test

ping

On Wed, Jul 14 2021 at 04:26:07 AM -0400, Hamza Mahfooz
<[email protected]> wrote:
> If we consider the output of the following command:
>
> $ git shortlog | grep '"' | wc -l
> 14185
>
> It becomes apparent that quite a number of commits have titles that,
> contain at least one quotation mark and if you attempt to refer to
> those
> commits in a new patch, checkpatch throws a false positive. This is
> because, checkpatch disallows the use of quotation marks in commit
> titles,
> only when referring to those commits in commit descriptions.
>
> Signed-off-by: Hamza Mahfooz <[email protected]>
> ---
> scripts/checkpatch.pl | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 461d4221e4a4..cf31e8c994d3 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -3200,20 +3200,20 @@ sub process {
> $long = 1 if ($line =~ /\bcommit\s+[0-9a-f]{41,}/i);
> $space = 0 if ($line =~ /\bcommit [0-9a-f]/i);
> $case = 0 if ($line =~ /\b[Cc]ommit\s+[0-9a-f]{5,40}[^A-F]/);
> - if ($line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("([^"]+)"\)/i) {
> + if ($line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("(.+)"\)/i) {
> $orig_desc = $1;
> $hasparens = 1;
> } elsif ($line =~ /\bcommit\s+[0-9a-f]{5,}\s*$/i &&
> defined $rawlines[$linenr] &&
> - $rawlines[$linenr] =~ /^\s*\("([^"]+)"\)/) {
> + $rawlines[$linenr] =~ /^\s*\("(.+)"\)/) {
> $orig_desc = $1;
> $hasparens = 1;
> - } elsif ($line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("[^"]+$/i &&
> + } elsif ($line =~ /\bcommit\s+[0-9a-f]{5,}\s+\(".+$/i &&
> defined $rawlines[$linenr] &&
> - $rawlines[$linenr] =~ /^\s*[^"]+"\)/) {
> - $line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("([^"]+)$/i;
> + $rawlines[$linenr] =~ /^\s*.+"\)/) {
> + $line =~ /\bcommit\s+[0-9a-f]{5,}\s+\("(.+)$/i;
> $orig_desc = $1;
> - $rawlines[$linenr] =~ /^\s*([^"]+)"\)/;
> + $rawlines[$linenr] =~ /^\s*(.+)"\)/;
> $orig_desc .= " " . $1;
> $hasparens = 1;
> }
> --
> 2.32.0
>


2021-08-14 08:44:16

by Lukas Bulwahn

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: fix an issue regarding the git commit description style test

On Wed, Jul 14, 2021 at 10:26 AM Hamza Mahfooz
<[email protected]> wrote:
>
> If we consider the output of the following command:
>
> $ git shortlog | grep '"' | wc -l
> 14185
>
> It becomes apparent that quite a number of commits have titles that,
> contain at least one quotation mark and if you attempt to refer to those
> commits in a new patch, checkpatch throws a false positive. This is
> because, checkpatch disallows the use of quotation marks in commit titles,
> only when referring to those commits in commit descriptions.
>

Joe will certainly have the final say on this.

But just some remarks and hints from my side that might help all of us
judge this change:

14185 commits with at least one quotation mark might sound a lot, but
given that we have surpassed the one million commits, 14 thousand
commits is basically 1,4% so really a small fraction. Checkpatch is a
really large set of heuristics, many rules are much more fuzzy and
'wrong' for much larger classes than 1,4% of potential cases. So, we
are improving the heuristics here of a rule that is already very good,
compared to other checkpatch rules.

For all changes to checkpatch, that Dwaipayan (see CC), my former
mentee, contributed, we always ran a checkpatch evaluation on the
latest ~100,000 commits and checked the difference of before and after
the change to check if the change had some unexpected negative effect
besides its intended positive effect.

I would suggest that you do that too and share the results of that
evaluation with us. If you need some assistance or guidance on how to
create such a quick checkpatch evaluation, please just let Dwaipayan
and me know and we might give some further hints.

I hope this helps.

Lukas

2021-08-15 00:49:21

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH] checkpatch: fix an issue regarding the git commit description style test

On Sat, 2021-08-14 at 10:43 +0200, Lukas Bulwahn wrote:
> On Wed, Jul 14, 2021 at 10:26 AM Hamza Mahfooz
> <[email protected]> wrote:
> >
> > If we consider the output of the following command:
> >
> > $ git shortlog | grep '"' | wc -l
> > 14185
> >
> > It becomes apparent that quite a number of commits have titles that,
> > contain at least one quotation mark and if you attempt to refer to those
> > commits in a new patch, checkpatch throws a false positive. This is
> > because, checkpatch disallows the use of quotation marks in commit titles,
> > only when referring to those commits in commit descriptions.
> >
>
> Joe will certainly have the final say on this.

I did suggest a patch.

https://lore.kernel.org/lkml/[email protected]/