scripts: documentation-file-ref-check: improve :doc: handling
authorMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Sat, 22 Feb 2020 09:00:01 +0000 (10:00 +0100)
committerJonathan Corbet <corbet@lwn.net>
Tue, 25 Feb 2020 10:01:05 +0000 (03:01 -0700)
There are some issues at the script with regards to :doc:
tags:

- It doesn't escape files under Documentation/sphinx,
  leading to false positives;
- It doesn't handle root URLs, like :doc:`/x86/boot`;
- It doesn't output the file with a bad reference.

Address those things, in order to remove false positives
from the list of problems.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
scripts/documentation-file-ref-check

index 7784c54..997202a 100755 (executable)
@@ -51,7 +51,9 @@ open IN, "git grep ':doc:\`' Documentation/|"
      or die "Failed to run git grep";
 while (<IN>) {
        next if (!m,^([^:]+):.*\:doc\:\`([^\`]+)\`,);
+       next if (m,sphinx/,);
 
+       my $file = $1;
        my $d = $1;
        my $doc_ref = $2;
 
@@ -60,7 +62,12 @@ while (<IN>) {
        $d =~ s,(.*/).*,$1,;
        $f =~ s,.*\<([^\>]+)\>,$1,;
 
-       $f ="$d$f.rst";
+       if ($f =~ m,^/,) {
+               $f = "$f.rst";
+               $f =~ s,^/,Documentation/,;
+       } else {
+               $f = "$d$f.rst";
+       }
 
        next if (grep -e, glob("$f"));
 
@@ -69,7 +76,7 @@ while (<IN>) {
        }
        $doc_fix++;
 
-       print STDERR "$f: :doc:`$doc_ref`\n";
+       print STDERR "$file: :doc:`$doc_ref`\n";
 }
 close IN;