checkpatch: warn when unknown tags are used for links
authorKai Wasserbäch <kai@dev.carbon-project.org>
Fri, 20 Jan 2023 12:35:18 +0000 (13:35 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 3 Feb 2023 06:50:05 +0000 (22:50 -0800)
Patch series "checkpatch.pl: warn about discouraged tags and missing Link:
tags", v4.

The first two changes make checkpatch.pl check for a few mistakes wrt to
links to bug reports Linus recently complained about a few times.
Avoiding those is also important for my regression tracking efforts a lot,
as the automated tracking performed by regzbot relies on the proper usage
of the Link: tag.

The third patch fixes a few small oddities noticed in existing code during
review of the two changes.

This patch (of 3):

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 --no-merges --format=email -P \
   --grep='^\w+:[  ]*http' | grep -Poh '^\w+:[  ]*http' | \
  sort | uniq -c | sort -rn | head -n 20
 103958 Link: http
    418 BugLink: http
    372 Patchwork: http
    280 Closes: http
    224 Bug: http
    123 References: http
     84 Bugzilla: http
     61 URL: http
     42 v1: http
     38 Datasheet: http
     20 v2: http
      9 Ref: http
      9 Fixes: http
      9 Buglink: http
      8 v3: http
      8 Reference: http
      7 See: http
      6 1: http
      5 link: http
      3 Link: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].

Link: https://lkml.kernel.org/r/cover.1674217480.git.linux@leemhuis.info
Link: https://lore.kernel.org/all/CAHk-=wgs38ZrfPvy=nOwVkVzjpM3VFU1zobP37Fwd_h9iAD5JQ@mail.gmail.com/
Link: https://lore.kernel.org/all/15f7df96d49082fb7799dda6e187b33c84f38831.camel@perches.com/
Link: https://lkml.kernel.org/r/3b036087d80b8c0e07a46a1dbaaf4ad0d018f8d5.1674217480.git.linux@leemhuis.info
Signed-off-by: Kai Wasserbäch <kai@dev.carbon-project.org>
Co-developed-by: Thorsten Leemhuis <linux@leemhuis.info>
Signed-off-by: Thorsten Leemhuis <linux@leemhuis.info>
Cc: Andy Whitcroft <apw@canonical.com>
Cc: Dwaipayan Ray <dwaipayanray1@gmail.com>
Cc: Joe Perches <joe@perches.com>
Cc: Lukas Bulwahn <lukas.bulwahn@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
scripts/checkpatch.pl

index a6d6d7e1d0cf1927b0bd31e2dcfb6baa19051b07..facebdc6ee076a2adbab238eefb96834284b0534 100755 (executable)
@@ -3252,6 +3252,18 @@ 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 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);
+                       }
+               }
+
 # Check for lines starting with a #
                if ($in_commit_log && $line =~ /^#/) {
                        if (WARN("COMMIT_COMMENT_SYMBOL",