Re: [PATCH] Documentation: add script and build target to check for broken file references

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 09 Oct 2017, Tom Saeger <tom.saeger@xxxxxxxxxx> wrote:
> On Mon, Oct 09, 2017 at 03:26:15PM +0000, Jani Nikula wrote:
>> Add a simple script and build target to do a treewide grep for
>> references to files under Documentation, and report the non-existing
>> file in stderr. It tries to take into account punctuation not part of
>> the filename, and wildcards, but there are bound to be false positives
>> too. Mostly seems accurate though.
>> 
>> We've moved files around enough to make having this worthwhile.
>> 
>> Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx>
>> ---
>>  Documentation/Makefile               |  4 ++++
>>  Makefile                             |  2 +-
>>  scripts/documentation-file-ref-check | 15 +++++++++++++++
>>  3 files changed, 20 insertions(+), 1 deletion(-)
>>  create mode 100755 scripts/documentation-file-ref-check
>> 
>> diff --git a/Documentation/Makefile b/Documentation/Makefile
>> index 85f7856f0092..f4f5aecb81d1 100644
>> --- a/Documentation/Makefile
>> +++ b/Documentation/Makefile
>> @@ -97,6 +97,9 @@ endif # HAVE_SPHINX
>>  # The following targets are independent of HAVE_SPHINX, and the rules should
>>  # work or silently pass without Sphinx.
>>  
>> +refcheckdocs:
>> +	$(Q)cd $(srctree);scripts/documentation-file-ref-check
>> +
>>  cleandocs:
>>  	$(Q)rm -rf $(BUILDDIR)
>>  	$(Q)$(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/media clean
>> @@ -109,6 +112,7 @@ dochelp:
>>  	@echo  '  epubdocs        - EPUB'
>>  	@echo  '  xmldocs         - XML'
>>  	@echo  '  linkcheckdocs   - check for broken external links (will connect to external hosts)'
>> +	@echo  '  refcheckdocs    - check for references to non-existing files under Documentation'
>>  	@echo  '  cleandocs       - clean all generated files'
>>  	@echo
>>  	@echo  '  make SPHINXDIRS="s1 s2" [target] Generate only docs of folder s1, s2'
>> diff --git a/Makefile b/Makefile
>> index cf007a31d575..a97e70a9a39c 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -1454,7 +1454,7 @@ $(help-board-dirs): help-%:
>>  
>>  # Documentation targets
>>  # ---------------------------------------------------------------------------
>> -DOC_TARGETS := xmldocs latexdocs pdfdocs htmldocs epubdocs cleandocs linkcheckdocs
>> +DOC_TARGETS := xmldocs latexdocs pdfdocs htmldocs epubdocs cleandocs linkcheckdocs refcheckdocs
>>  PHONY += $(DOC_TARGETS)
>>  $(DOC_TARGETS): scripts_basic FORCE
>>  	$(Q)$(MAKE) $(build)=Documentation $@
>> diff --git a/scripts/documentation-file-ref-check b/scripts/documentation-file-ref-check
>> new file mode 100755
>> index 000000000000..bc1659900e89
>> --- /dev/null
>> +++ b/scripts/documentation-file-ref-check
>> @@ -0,0 +1,15 @@
>> +#!/bin/sh
>> +# Treewide grep for references to files under Documentation, and report
>> +# non-existing files in stderr.
>> +
>> +for f in $(git ls-files); do
>> +	for ref in $(grep -ho "Documentation/[A-Za-z0-9_.,~/*+-]*" "$f"); do
>> +		# presume trailing . and , are not part of the name
>> +		ref=${ref%%[.,]}
>> +
>> +		# use ls to handle wildcards
>> +		if ! ls $ref >/dev/null 2>&1; then
>> +			echo "$f: $ref" >&2
>> +		fi
>> +	done
>> +done
>> -- 
>> 2.11.0
>> 
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-doc" in
>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>> 
>
> I just did something similar, but in python (parallel even).  I like
> your version for its elegant simplicity.

Thanks. I didn't see yours. I'm fine either way although I do like
simplicity.

> I do however have a series of doc ref fixes ready to send out.  They are
> fairly fine-grained but could easily be squashed down.
>
> Given that you added this check - do you also have a patch for fixes?

None. I checked that my corner of the kernel is fine, and sent this as a
carrot for others to bite. Please go ahead with your fixes!

Thanks,
Jani.


>
> Regards,
>
> --Tom
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-doc" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Jani Nikula, Intel Open Source Technology Center
--
To unsubscribe from this list: send the line "unsubscribe linux-doc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux