Re: [PATCH v4] checkpatch: warn for non-standard fixes tag style
From: Joe Perches
Date: Fri Sep 09 2022 - 18:16:46 EST
On Fri, 2022-09-09 at 09:40 +0200, niklas.soderlund@xxxxxxxxxxxx wrote:
> On 2022-09-08 17:49:14 +0000, Philippe Schenker wrote:
> > Thanks for adding me to cc. I will also add Stephen, as he also sent
> > some comments on my submission the exact same problem. I'm supportive of
> > your code as it has the nice advantage of suggesting the right format of
> > the tag if it might be wrong. However it seems lot of stuff is slightly
> > duplicated and lots of lines could be left away simplifying it greatly.
It's not very possible to reduce the line count here.
I mentioned the same thing in my first reply.
> > > +# Check Fixes: styles is correct
> > > + if (!$in_header_lines && $line =~ /^fixes:?/i) {
> >
> > I would check all lines that start with fixes, even if there is
> > whitespace in front (and then failing later on...)
> >
> > if (!$in_header_lines && $line =~ /^\s*fixes:?/i) {
I think that's a poor idea.
You should really review git history for lines that start with fixes
and look at the number of false positives that would give.
Try this grep:
$ git log -100000 --no-merges --grep="^\s*fixes" -i --format=email -P | \
grep -P -i "^\s*fixes)" | \
grep -P -v "^Fixes: [0-9a-f]{12,}'
[...]
That is a greater than 10% false positive rate.
I think it's better to make sure that there is a likely SHA1 of some
minimum length after the fixes line.
And a relatively common defect is to have the word "commit" after fixes.
e.g.:
Fixes commit 554c0a3abf216 ("staging: Add rtl8723bs sdio wifi driver").
Fixes commit a2c60d42d97c ("Add files for new driver - part 16").
So maybe:
if (!$in_header_lines &&
$line =~ /^\s*fixes:?\s*(?:commit\s*)?[0-9a-f]{5,}\b/i)