Re: [PATCH] checkpatch: add check for fixes: tag

From: Philippe Schenker
Date: Thu Sep 08 2022 - 06:01:51 EST


On Wed, 2022-09-07 at 08:18 -0700, Joe Perches wrote:
> On Wed, 2022-09-07 at 14:35 +0200, Philippe Schenker wrote:
> > From: Philippe Schenker <philippe.schenker@xxxxxxxxxxx>
> >
> > The page about submitting patches in
> > Documentation/process/submitting-patches.rst is very specific on how
> > that
> > tag should be formatted: 'Fixes: <12+ chars of sha1> (\"<title
> > line>\")'
> >
> > Add a rule that warns if this format does not match. This commit is
> > introduced as in the past commits have been sent multiple times with
> > having the word commit also in the Fixes: tag which had to be
> > corrected
> > by the maintainers. [1]
>
> I preferred your first patch that added the commit description match
> as that's a fairly common defect.

Hi Joe, thanks for your review!

This patch is my first one that I'm sending. I was not aware that Niklas
sent the exact same thing few days earlier. Maybe you mix these two
submissions. [1]

How do we proceed? I guess it is up to you which approach you like
better. Niklas has good parts in his submission which I could take in or
I contribute in his v2 of the patch.

Certainly, this shows that the check we're trying to add is helpful 🙂.

Anyway, I'll answer your comments that not already got answered by
Stephen.

[1]
https://lore.kernel.org/all/20220905105247.920676-1-niklas.soderlund@xxxxxxxxxxxx/

>
> > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> []
> > @@ -3438,6 +3438,13 @@ sub process {
> >                         }
> >                 }
> >  
> > +# Check fixes tag format
> > +               if ($in_commit_log && ($line =~ /^\s*Fixes:/i) &&
> > +                       !($line =~ /^\s*Fixes:\s[0-9a-
> > f]{12,40}\s\(\".*\"\)/)) {
>
> All fixes lines should start in the first column.

Agree, I didn't want to make it too strict but this can be easily
changed of course.

>
> This allows spaces at the start of the line and the only white space
> allowed after Fixes: and after the SHA1 should be a space not a tab.

Agree too, I'll change the regexp accordingly if you decide to go with
my submission.

>
> I think the test better if it checks for a SHA1 after fixes.
>
> And IMO
>
>         !(foo =~ /bar.../)
>
> is better written as
>
>         foo !~ /bar.../
>
> so
>
>                 if ($in_commit_log &&
>                     $line =~ /^\s*Fixes:?\s*[0-9a-f]{5,}\b/i &&
>                     $line !~ /^Fixes: [0-9a-f]{12,40} \(\".*\"\)/)) {
>
> Though it's arguable that the SHA1 should _only_ be length 12
> and not longer.
>