Re: [PATCH 1/2] checkpatch: warn when unknown tags are used for links

From: Joe Perches
Date: Thu Dec 08 2022 - 14:59:09 EST


On Thu, 2022-12-08 at 20:32 +0100, Kai Wasserbäch wrote:
> Issue a warning when encountering URLs behind unknown tags, as Linus
> recently stated ```please stop making up random tags that make no sense.
> Just use "Link:"```[1]. That statement was triggered by an use of
> 'BugLink', but that's not the only tag people invented:
>
> $ git log -100000 --format=email -P --grep='^\w+:[ \t]*http' | \

Please use the --no-merges output

> grep -Poh '^\w+:[ \t]*http' | \
> sort | uniq -c | sort -rn | head -n 20
> 103889 Link: http
> 415 BugLink: http
> 372 Patchwork: http
> 270 Closes: http
> 221 Bug: http
> 121 References: http
> 101 v1: http
> 77 Bugzilla: http
> 60 URL: http
> 59 v2: http
> 37 Datasheet: http
> 35 v3: http
> 19 v4: http
> 12 v5: http
> 9 Ref: http
> 9 Fixes: http
> 9 Buglink: http
> 8 v6: http
> 8 Reference: http
> 7 V1: http
>
> Some of these non-standard tags make it harder for external tools that
> rely on use of proper tags. One of those tools is the regression
> tracking bot 'regzbot', which looks out for "Link:" tags pointing to
> reports of tracked regressions.
>
> The initial idea was to use a disallow list to raise an error when
> encountering known unwanted tags like BugLink:; during review it was
> requested to use a list of allowed tags instead[2].
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
[]
> @@ -3239,6 +3239,13 @@ sub process {
> $commit_log_possible_stack_dump = 0;
> }
>
> +# Check for odd tags before a URI/URL
> + if ($in_commit_log &&
> + $line =~ /^\s*(\w+):\s*http/ && $1 !~ /^Link/) {
> + WARN("COMMIT_LOG_USE_LINK",
> + "Unknown link reference '$1:', use 'Link:' instead.\n" . $herecurr);

This would allow LinkFoo: so better would be

$line =~ /^\s*(\w+):\s*http/ && $1 ne 'Link')
or
$line =~ /^\s*(\w+):\s*http/ && $1 !~ /^Link$/) {

(and checkpatch doesn't use periods after output messages)

Maybe better as well would be to use something like the below to
better describe the preferred location of patch versioning info.

# Check for odd tags before a URI/URL
if ($in_commit_log &&
$line =~ /^\s*(\w+):\s*http/ && $1 ne 'Link') {
if ($1 =~ /^v(?:ersion)?\d+/i) {
WARN("COMMIT_LOG_VERSIONING",
"Patch version information should be after the --- line\n" . $herecurr);
} else {
WARN("COMMIT_LOG_USE_LINK",
"Unknown link reference '$1:', use 'Link:' instead\n" . $herecurr);
}
}