From: Julia Lawall <julia.lawall@lip6.fr>
To: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Daniel Vetter <daniel@ffwll.ch>,
Julia Lawall <Julia.Lawall@lip6.fr>,
Linux PM list <linux-pm@vger.kernel.org>,
kernel-janitors@vger.kernel.org,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
dri-devel <dri-devel@lists.freedesktop.org>,
linux-clk@vger.kernel.org,
"linaro-mm-sig@lists.linaro.org" <linaro-mm-sig@lists.linaro.org>,
linux-mtd@lists.infradead.org,
"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
drbd-dev@lists.linbit.com, linux-metag@vger.kernel.org,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-media@vger.kernel.org" <linux-media@vger.kernel.org>,
linux-doc@vger.kernel.org
Subject: Re: kernel-doc-rst-lint (was: Re: [PATCH 00/15] improve function-level documentation)
Date: Wed, 05 Oct 2016 20:25:35 +0000 [thread overview]
Message-ID: <alpine.DEB.2.10.1610052224240.3130@hadrien> (raw)
In-Reply-To: <87h98quc1w.fsf@intel.com>
[-- Attachment #1: Type: TEXT/PLAIN, Size: 6637 bytes --]
On Wed, 5 Oct 2016, Jani Nikula wrote:
> On Wed, 05 Oct 2016, Daniel Vetter <daniel@ffwll.ch> wrote:
> > Jani Nikula has a patch with a scrip to make the one kernel-doc parser
> > into a lint/checker pass over the entire kernel. I think that'd would
> > be more robust instead of trying to approximate the real kerneldoc
> > parser. Otoh that parser is a horror show of a perl/regex driven state
> > machine ;-)
> >
> > Jani, can you pls digg out these patches? Can't find them right now ...
>
> Expanding the massive Cc: with linux-doc list...
>
> Here goes. It's a quick hack from months ago, but still seems to
> somewhat work. At least for the kernel-doc parts. The reStructuredText
> lint part isn't all that great, and doesn't have mapping to line numbers
> like the Sphinx kernel-doc extension does. Anyway I'm happy how this
> integrates with kernel build CHECK and C=1/C=2.
>
> I guess Julia's goal is to automate the *fixing* of some of the error
> classes from kernel-doc. Not sure how well this could be made to
> integrate with any of that.
No, my work doesn't fix anything. Coccinelle can't actually process
comments. I just correlated the parsed comment with the function header.
julia
>
> BR,
> Jani.
>
>
> From 1244efa0f63a7b13795e8c37f81733a3c8bfc56a Mon Sep 17 00:00:00 2001
> From: Jani Nikula <jani.nikula@intel.com>
> Date: Tue, 31 May 2016 18:11:33 +0300
> Subject: [PATCH] kernel-doc-rst-lint: add tool to check kernel-doc and rst
> correctness
> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo
> Cc: Jani Nikula <jani.nikula@intel.com>
>
> Simple kernel-doc and reStructuredText lint tool that can be used
> independently and as a kernel build CHECK tool to validate kernel-doc
> comments.
>
> Independent usage:
> $ kernel-doc-rst-lint FILE
>
> Kernel CHECK usage:
> $ make CHECK=scripts/kernel-doc-rst-lint C=1 # (or C=2)
>
> Depends on docutils and the rst-lint package
> https://pypi.python.org/pypi/restructuredtext_lint
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> scripts/kernel-doc-rst-lint | 106 ++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 106 insertions(+)
> create mode 100755 scripts/kernel-doc-rst-lint
>
> diff --git a/scripts/kernel-doc-rst-lint b/scripts/kernel-doc-rst-lint
> new file mode 100755
> index 000000000000..7e0157679f83
> --- /dev/null
> +++ b/scripts/kernel-doc-rst-lint
> @@ -0,0 +1,106 @@
> +#!/usr/bin/env python
> +# coding=utf-8
> +#
> +# Copyright © 2016 Intel Corporation
> +#
> +# Permission is hereby granted, free of charge, to any person obtaining a
> +# copy of this software and associated documentation files (the "Software"),
> +# to deal in the Software without restriction, including without limitation
> +# the rights to use, copy, modify, merge, publish, distribute, sublicense,
> +# and/or sell copies of the Software, and to permit persons to whom the
> +# Software is furnished to do so, subject to the following conditions:
> +#
> +# The above copyright notice and this permission notice (including the next
> +# paragraph) shall be included in all copies or substantial portions of the
> +# Software.
> +#
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> +# IN THE SOFTWARE.
> +#
> +# Authors:
> +# Jani Nikula <jani.nikula@intel.com>
> +#
> +# Simple kernel-doc and reStructuredText lint tool that can be used
> +# independently and as a kernel build CHECK tool to validate kernel-doc
> +# comments.
> +#
> +# Independent usage:
> +# $ kernel-doc-rst-lint FILE
> +#
> +# Kernel CHECK usage:
> +# $ make CHECK=scripts/kernel-doc-rst-lint C=1 # (or C=2)
> +#
> +# Depends on docutils and the rst-lint package
> +# https://pypi.python.org/pypi/restructuredtext_lint
> +#
> +
> +import os
> +import subprocess
> +import sys
> +
> +from docutils.parsers.rst import directives
> +from docutils.parsers.rst import Directive
> +from docutils.parsers.rst import roles
> +from docutils import nodes, statemachine
> +import restructuredtext_lint
> +
> +class DummyDirective(Directive):
> + required_argument = 1
> + optional_arguments = 0
> + option_spec = { }
> + has_content = True
> +
> + def run(self):
> + return []
> +
> +# Fake the Sphinx C Domain directives and roles
> +directives.register_directive('c:function', DummyDirective)
> +directives.register_directive('c:type', DummyDirective)
> +roles.register_generic_role('c:func', nodes.emphasis)
> +roles.register_generic_role('c:type', nodes.emphasis)
> +
> +# We accept but ignore parameters to be compatible with how the kernel build
> +# invokes CHECK.
> +if len(sys.argv) < 2:
> + sys.stderr.write('usage: kernel-doc-rst-lint [IGNORED OPTIONS] FILE\n');
> + sys.exit(1)
> +
> +infile = sys.argv[len(sys.argv) - 1]
> +cmd = ['scripts/kernel-doc', '-rst', infile]
> +
> +try:
> + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
> + out, err = p.communicate()
> +
> + # python2 needs conversion to unicode.
> + # python3 with universal_newlines=True returns strings.
> + if sys.version_info.major < 3:
> + out, err = unicode(out, 'utf-8'), unicode(err, 'utf-8')
> +
> + # kernel-doc errors
> + sys.stderr.write(err)
> + if p.returncode != 0:
> + sys.exit(p.returncode)
> +
> + # restructured text errors
> + lines = statemachine.string2lines(out, 8, convert_whitespace=True)
> + lint_errors = restructuredtext_lint.lint(out, infile)
> + for error in lint_errors:
> + # Ignore INFO
> + if error.level <= 1:
> + continue
> +
> + print(error.source + ': ' + error.type + ': ' + error.full_message)
> + if error.line is not None:
> + print('Context:')
> + print('\t' + lines[error.line - 1])
> + print('\t' + lines[error.line])
> +
> +except Exception as e:
> + sys.stderr.write(str(e) + '\n')
> + sys.exit(1)
> --
> 2.1.4
>
>
> --
> Jani Nikula, Intel Open Source Technology Center
> --
> To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
WARNING: multiple messages have this Message-ID (diff)
From: Julia Lawall <julia.lawall@lip6.fr>
To: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Daniel Vetter <daniel@ffwll.ch>,
Julia Lawall <Julia.Lawall@lip6.fr>,
Linux PM list <linux-pm@vger.kernel.org>,
kernel-janitors@vger.kernel.org,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
dri-devel <dri-devel@lists.freedesktop.org>,
linux-clk@vger.kernel.org,
"linaro-mm-sig@lists.linaro.org" <linaro-mm-sig@lists.linaro.org>,
linux-mtd@lists.infradead.org,
"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
drbd-dev@lists.linbit.com, linux-metag@vger.kernel.org,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-media@vger.kernel.org" <linux-media@vger.kernel.org>,
linux-doc@vger.kernel.org
Subject: Re: kernel-doc-rst-lint (was: Re: [PATCH 00/15] improve function-level documentation)
Date: Wed, 5 Oct 2016 22:25:35 +0200 (CEST) [thread overview]
Message-ID: <alpine.DEB.2.10.1610052224240.3130@hadrien> (raw)
In-Reply-To: <87h98quc1w.fsf@intel.com>
[-- Attachment #1: Type: TEXT/PLAIN, Size: 6637 bytes --]
On Wed, 5 Oct 2016, Jani Nikula wrote:
> On Wed, 05 Oct 2016, Daniel Vetter <daniel@ffwll.ch> wrote:
> > Jani Nikula has a patch with a scrip to make the one kernel-doc parser
> > into a lint/checker pass over the entire kernel. I think that'd would
> > be more robust instead of trying to approximate the real kerneldoc
> > parser. Otoh that parser is a horror show of a perl/regex driven state
> > machine ;-)
> >
> > Jani, can you pls digg out these patches? Can't find them right now ...
>
> Expanding the massive Cc: with linux-doc list...
>
> Here goes. It's a quick hack from months ago, but still seems to
> somewhat work. At least for the kernel-doc parts. The reStructuredText
> lint part isn't all that great, and doesn't have mapping to line numbers
> like the Sphinx kernel-doc extension does. Anyway I'm happy how this
> integrates with kernel build CHECK and C=1/C=2.
>
> I guess Julia's goal is to automate the *fixing* of some of the error
> classes from kernel-doc. Not sure how well this could be made to
> integrate with any of that.
No, my work doesn't fix anything. Coccinelle can't actually process
comments. I just correlated the parsed comment with the function header.
julia
>
> BR,
> Jani.
>
>
> From 1244efa0f63a7b13795e8c37f81733a3c8bfc56a Mon Sep 17 00:00:00 2001
> From: Jani Nikula <jani.nikula@intel.com>
> Date: Tue, 31 May 2016 18:11:33 +0300
> Subject: [PATCH] kernel-doc-rst-lint: add tool to check kernel-doc and rst
> correctness
> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo
> Cc: Jani Nikula <jani.nikula@intel.com>
>
> Simple kernel-doc and reStructuredText lint tool that can be used
> independently and as a kernel build CHECK tool to validate kernel-doc
> comments.
>
> Independent usage:
> $ kernel-doc-rst-lint FILE
>
> Kernel CHECK usage:
> $ make CHECK=scripts/kernel-doc-rst-lint C=1 # (or C=2)
>
> Depends on docutils and the rst-lint package
> https://pypi.python.org/pypi/restructuredtext_lint
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> scripts/kernel-doc-rst-lint | 106 ++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 106 insertions(+)
> create mode 100755 scripts/kernel-doc-rst-lint
>
> diff --git a/scripts/kernel-doc-rst-lint b/scripts/kernel-doc-rst-lint
> new file mode 100755
> index 000000000000..7e0157679f83
> --- /dev/null
> +++ b/scripts/kernel-doc-rst-lint
> @@ -0,0 +1,106 @@
> +#!/usr/bin/env python
> +# coding=utf-8
> +#
> +# Copyright © 2016 Intel Corporation
> +#
> +# Permission is hereby granted, free of charge, to any person obtaining a
> +# copy of this software and associated documentation files (the "Software"),
> +# to deal in the Software without restriction, including without limitation
> +# the rights to use, copy, modify, merge, publish, distribute, sublicense,
> +# and/or sell copies of the Software, and to permit persons to whom the
> +# Software is furnished to do so, subject to the following conditions:
> +#
> +# The above copyright notice and this permission notice (including the next
> +# paragraph) shall be included in all copies or substantial portions of the
> +# Software.
> +#
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> +# IN THE SOFTWARE.
> +#
> +# Authors:
> +# Jani Nikula <jani.nikula@intel.com>
> +#
> +# Simple kernel-doc and reStructuredText lint tool that can be used
> +# independently and as a kernel build CHECK tool to validate kernel-doc
> +# comments.
> +#
> +# Independent usage:
> +# $ kernel-doc-rst-lint FILE
> +#
> +# Kernel CHECK usage:
> +# $ make CHECK=scripts/kernel-doc-rst-lint C=1 # (or C=2)
> +#
> +# Depends on docutils and the rst-lint package
> +# https://pypi.python.org/pypi/restructuredtext_lint
> +#
> +
> +import os
> +import subprocess
> +import sys
> +
> +from docutils.parsers.rst import directives
> +from docutils.parsers.rst import Directive
> +from docutils.parsers.rst import roles
> +from docutils import nodes, statemachine
> +import restructuredtext_lint
> +
> +class DummyDirective(Directive):
> + required_argument = 1
> + optional_arguments = 0
> + option_spec = { }
> + has_content = True
> +
> + def run(self):
> + return []
> +
> +# Fake the Sphinx C Domain directives and roles
> +directives.register_directive('c:function', DummyDirective)
> +directives.register_directive('c:type', DummyDirective)
> +roles.register_generic_role('c:func', nodes.emphasis)
> +roles.register_generic_role('c:type', nodes.emphasis)
> +
> +# We accept but ignore parameters to be compatible with how the kernel build
> +# invokes CHECK.
> +if len(sys.argv) < 2:
> + sys.stderr.write('usage: kernel-doc-rst-lint [IGNORED OPTIONS] FILE\n');
> + sys.exit(1)
> +
> +infile = sys.argv[len(sys.argv) - 1]
> +cmd = ['scripts/kernel-doc', '-rst', infile]
> +
> +try:
> + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
> + out, err = p.communicate()
> +
> + # python2 needs conversion to unicode.
> + # python3 with universal_newlines=True returns strings.
> + if sys.version_info.major < 3:
> + out, err = unicode(out, 'utf-8'), unicode(err, 'utf-8')
> +
> + # kernel-doc errors
> + sys.stderr.write(err)
> + if p.returncode != 0:
> + sys.exit(p.returncode)
> +
> + # restructured text errors
> + lines = statemachine.string2lines(out, 8, convert_whitespace=True)
> + lint_errors = restructuredtext_lint.lint(out, infile)
> + for error in lint_errors:
> + # Ignore INFO
> + if error.level <= 1:
> + continue
> +
> + print(error.source + ': ' + error.type + ': ' + error.full_message)
> + if error.line is not None:
> + print('Context:')
> + print('\t' + lines[error.line - 1])
> + print('\t' + lines[error.line])
> +
> +except Exception as e:
> + sys.stderr.write(str(e) + '\n')
> + sys.exit(1)
> --
> 2.1.4
>
>
> --
> Jani Nikula, Intel Open Source Technology Center
> --
> To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
WARNING: multiple messages have this Message-ID (diff)
From: Julia Lawall <julia.lawall@lip6.fr>
To: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Linux PM list <linux-pm@vger.kernel.org>,
linux-doc@vger.kernel.org, kernel-janitors@vger.kernel.org,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
dri-devel <dri-devel@lists.freedesktop.org>,
linux-metag@vger.kernel.org,
"linaro-mm-sig@lists.linaro.org" <linaro-mm-sig@lists.linaro.org>,
Julia Lawall <Julia.Lawall@lip6.fr>,
linux-mtd@lists.infradead.org, Daniel Vetter <daniel@ffwll.ch>,
"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
"linux-media@vger.kernel.org" <linux-media@vger.kernel.org>,
linux-clk@vger.kernel.org,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
drbd-dev@lists.linbit.com
Subject: Re: [Drbd-dev] kernel-doc-rst-lint (was: Re: [PATCH 00/15] improve function-level documentation)
Date: Wed, 5 Oct 2016 22:25:35 +0200 (CEST) [thread overview]
Message-ID: <alpine.DEB.2.10.1610052224240.3130@hadrien> (raw)
In-Reply-To: <87h98quc1w.fsf@intel.com>
[-- Attachment #1: Type: TEXT/PLAIN, Size: 6821 bytes --]
On Wed, 5 Oct 2016, Jani Nikula wrote:
> On Wed, 05 Oct 2016, Daniel Vetter <daniel@ffwll.ch> wrote:
> > Jani Nikula has a patch with a scrip to make the one kernel-doc parser
> > into a lint/checker pass over the entire kernel. I think that'd would
> > be more robust instead of trying to approximate the real kerneldoc
> > parser. Otoh that parser is a horror show of a perl/regex driven state
> > machine ;-)
> >
> > Jani, can you pls digg out these patches? Can't find them right now ...
>
> Expanding the massive Cc: with linux-doc list...
>
> Here goes. It's a quick hack from months ago, but still seems to
> somewhat work. At least for the kernel-doc parts. The reStructuredText
> lint part isn't all that great, and doesn't have mapping to line numbers
> like the Sphinx kernel-doc extension does. Anyway I'm happy how this
> integrates with kernel build CHECK and C=1/C=2.
>
> I guess Julia's goal is to automate the *fixing* of some of the error
> classes from kernel-doc. Not sure how well this could be made to
> integrate with any of that.
No, my work doesn't fix anything. Coccinelle can't actually process
comments. I just correlated the parsed comment with the function header.
julia
>
> BR,
> Jani.
>
>
> From 1244efa0f63a7b13795e8c37f81733a3c8bfc56a Mon Sep 17 00:00:00 2001
> From: Jani Nikula <jani.nikula@intel.com>
> Date: Tue, 31 May 2016 18:11:33 +0300
> Subject: [PATCH] kernel-doc-rst-lint: add tool to check kernel-doc and rst
> correctness
> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo
> Cc: Jani Nikula <jani.nikula@intel.com>
>
> Simple kernel-doc and reStructuredText lint tool that can be used
> independently and as a kernel build CHECK tool to validate kernel-doc
> comments.
>
> Independent usage:
> $ kernel-doc-rst-lint FILE
>
> Kernel CHECK usage:
> $ make CHECK=scripts/kernel-doc-rst-lint C=1 # (or C=2)
>
> Depends on docutils and the rst-lint package
> https://pypi.python.org/pypi/restructuredtext_lint
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> scripts/kernel-doc-rst-lint | 106 ++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 106 insertions(+)
> create mode 100755 scripts/kernel-doc-rst-lint
>
> diff --git a/scripts/kernel-doc-rst-lint b/scripts/kernel-doc-rst-lint
> new file mode 100755
> index 000000000000..7e0157679f83
> --- /dev/null
> +++ b/scripts/kernel-doc-rst-lint
> @@ -0,0 +1,106 @@
> +#!/usr/bin/env python
> +# coding=utf-8
> +#
> +# Copyright © 2016 Intel Corporation
> +#
> +# Permission is hereby granted, free of charge, to any person obtaining a
> +# copy of this software and associated documentation files (the "Software"),
> +# to deal in the Software without restriction, including without limitation
> +# the rights to use, copy, modify, merge, publish, distribute, sublicense,
> +# and/or sell copies of the Software, and to permit persons to whom the
> +# Software is furnished to do so, subject to the following conditions:
> +#
> +# The above copyright notice and this permission notice (including the next
> +# paragraph) shall be included in all copies or substantial portions of the
> +# Software.
> +#
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> +# IN THE SOFTWARE.
> +#
> +# Authors:
> +# Jani Nikula <jani.nikula@intel.com>
> +#
> +# Simple kernel-doc and reStructuredText lint tool that can be used
> +# independently and as a kernel build CHECK tool to validate kernel-doc
> +# comments.
> +#
> +# Independent usage:
> +# $ kernel-doc-rst-lint FILE
> +#
> +# Kernel CHECK usage:
> +# $ make CHECK=scripts/kernel-doc-rst-lint C=1 # (or C=2)
> +#
> +# Depends on docutils and the rst-lint package
> +# https://pypi.python.org/pypi/restructuredtext_lint
> +#
> +
> +import os
> +import subprocess
> +import sys
> +
> +from docutils.parsers.rst import directives
> +from docutils.parsers.rst import Directive
> +from docutils.parsers.rst import roles
> +from docutils import nodes, statemachine
> +import restructuredtext_lint
> +
> +class DummyDirective(Directive):
> + required_argument = 1
> + optional_arguments = 0
> + option_spec = { }
> + has_content = True
> +
> + def run(self):
> + return []
> +
> +# Fake the Sphinx C Domain directives and roles
> +directives.register_directive('c:function', DummyDirective)
> +directives.register_directive('c:type', DummyDirective)
> +roles.register_generic_role('c:func', nodes.emphasis)
> +roles.register_generic_role('c:type', nodes.emphasis)
> +
> +# We accept but ignore parameters to be compatible with how the kernel build
> +# invokes CHECK.
> +if len(sys.argv) < 2:
> + sys.stderr.write('usage: kernel-doc-rst-lint [IGNORED OPTIONS] FILE\n');
> + sys.exit(1)
> +
> +infile = sys.argv[len(sys.argv) - 1]
> +cmd = ['scripts/kernel-doc', '-rst', infile]
> +
> +try:
> + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
> + out, err = p.communicate()
> +
> + # python2 needs conversion to unicode.
> + # python3 with universal_newlines=True returns strings.
> + if sys.version_info.major < 3:
> + out, err = unicode(out, 'utf-8'), unicode(err, 'utf-8')
> +
> + # kernel-doc errors
> + sys.stderr.write(err)
> + if p.returncode != 0:
> + sys.exit(p.returncode)
> +
> + # restructured text errors
> + lines = statemachine.string2lines(out, 8, convert_whitespace=True)
> + lint_errors = restructuredtext_lint.lint(out, infile)
> + for error in lint_errors:
> + # Ignore INFO
> + if error.level <= 1:
> + continue
> +
> + print(error.source + ': ' + error.type + ': ' + error.full_message)
> + if error.line is not None:
> + print('Context:')
> + print('\t' + lines[error.line - 1])
> + print('\t' + lines[error.line])
> +
> +except Exception as e:
> + sys.stderr.write(str(e) + '\n')
> + sys.exit(1)
> --
> 2.1.4
>
>
> --
> Jani Nikula, Intel Open Source Technology Center
> --
> To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
WARNING: multiple messages have this Message-ID (diff)
From: julia.lawall@lip6.fr (Julia Lawall)
To: linux-arm-kernel@lists.infradead.org
Subject: kernel-doc-rst-lint (was: Re: [PATCH 00/15] improve function-level documentation)
Date: Wed, 5 Oct 2016 22:25:35 +0200 (CEST) [thread overview]
Message-ID: <alpine.DEB.2.10.1610052224240.3130@hadrien> (raw)
In-Reply-To: <87h98quc1w.fsf@intel.com>
On Wed, 5 Oct 2016, Jani Nikula wrote:
> On Wed, 05 Oct 2016, Daniel Vetter <daniel@ffwll.ch> wrote:
> > Jani Nikula has a patch with a scrip to make the one kernel-doc parser
> > into a lint/checker pass over the entire kernel. I think that'd would
> > be more robust instead of trying to approximate the real kerneldoc
> > parser. Otoh that parser is a horror show of a perl/regex driven state
> > machine ;-)
> >
> > Jani, can you pls digg out these patches? Can't find them right now ...
>
> Expanding the massive Cc: with linux-doc list...
>
> Here goes. It's a quick hack from months ago, but still seems to
> somewhat work. At least for the kernel-doc parts. The reStructuredText
> lint part isn't all that great, and doesn't have mapping to line numbers
> like the Sphinx kernel-doc extension does. Anyway I'm happy how this
> integrates with kernel build CHECK and C=1/C=2.
>
> I guess Julia's goal is to automate the *fixing* of some of the error
> classes from kernel-doc. Not sure how well this could be made to
> integrate with any of that.
No, my work doesn't fix anything. Coccinelle can't actually process
comments. I just correlated the parsed comment with the function header.
julia
>
> BR,
> Jani.
>
>
> From 1244efa0f63a7b13795e8c37f81733a3c8bfc56a Mon Sep 17 00:00:00 2001
> From: Jani Nikula <jani.nikula@intel.com>
> Date: Tue, 31 May 2016 18:11:33 +0300
> Subject: [PATCH] kernel-doc-rst-lint: add tool to check kernel-doc and rst
> correctness
> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo
> Cc: Jani Nikula <jani.nikula@intel.com>
>
> Simple kernel-doc and reStructuredText lint tool that can be used
> independently and as a kernel build CHECK tool to validate kernel-doc
> comments.
>
> Independent usage:
> $ kernel-doc-rst-lint FILE
>
> Kernel CHECK usage:
> $ make CHECK=scripts/kernel-doc-rst-lint C=1 # (or C=2)
>
> Depends on docutils and the rst-lint package
> https://pypi.python.org/pypi/restructuredtext_lint
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> scripts/kernel-doc-rst-lint | 106 ++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 106 insertions(+)
> create mode 100755 scripts/kernel-doc-rst-lint
>
> diff --git a/scripts/kernel-doc-rst-lint b/scripts/kernel-doc-rst-lint
> new file mode 100755
> index 000000000000..7e0157679f83
> --- /dev/null
> +++ b/scripts/kernel-doc-rst-lint
> @@ -0,0 +1,106 @@
> +#!/usr/bin/env python
> +# coding=utf-8
> +#
> +# Copyright ? 2016 Intel Corporation
> +#
> +# Permission is hereby granted, free of charge, to any person obtaining a
> +# copy of this software and associated documentation files (the "Software"),
> +# to deal in the Software without restriction, including without limitation
> +# the rights to use, copy, modify, merge, publish, distribute, sublicense,
> +# and/or sell copies of the Software, and to permit persons to whom the
> +# Software is furnished to do so, subject to the following conditions:
> +#
> +# The above copyright notice and this permission notice (including the next
> +# paragraph) shall be included in all copies or substantial portions of the
> +# Software.
> +#
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
> +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> +# IN THE SOFTWARE.
> +#
> +# Authors:
> +# Jani Nikula <jani.nikula@intel.com>
> +#
> +# Simple kernel-doc and reStructuredText lint tool that can be used
> +# independently and as a kernel build CHECK tool to validate kernel-doc
> +# comments.
> +#
> +# Independent usage:
> +# $ kernel-doc-rst-lint FILE
> +#
> +# Kernel CHECK usage:
> +# $ make CHECK=scripts/kernel-doc-rst-lint C=1 # (or C=2)
> +#
> +# Depends on docutils and the rst-lint package
> +# https://pypi.python.org/pypi/restructuredtext_lint
> +#
> +
> +import os
> +import subprocess
> +import sys
> +
> +from docutils.parsers.rst import directives
> +from docutils.parsers.rst import Directive
> +from docutils.parsers.rst import roles
> +from docutils import nodes, statemachine
> +import restructuredtext_lint
> +
> +class DummyDirective(Directive):
> + required_argument = 1
> + optional_arguments = 0
> + option_spec = { }
> + has_content = True
> +
> + def run(self):
> + return []
> +
> +# Fake the Sphinx C Domain directives and roles
> +directives.register_directive('c:function', DummyDirective)
> +directives.register_directive('c:type', DummyDirective)
> +roles.register_generic_role('c:func', nodes.emphasis)
> +roles.register_generic_role('c:type', nodes.emphasis)
> +
> +# We accept but ignore parameters to be compatible with how the kernel build
> +# invokes CHECK.
> +if len(sys.argv) < 2:
> + sys.stderr.write('usage: kernel-doc-rst-lint [IGNORED OPTIONS] FILE\n');
> + sys.exit(1)
> +
> +infile = sys.argv[len(sys.argv) - 1]
> +cmd = ['scripts/kernel-doc', '-rst', infile]
> +
> +try:
> + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
> + out, err = p.communicate()
> +
> + # python2 needs conversion to unicode.
> + # python3 with universal_newlines=True returns strings.
> + if sys.version_info.major < 3:
> + out, err = unicode(out, 'utf-8'), unicode(err, 'utf-8')
> +
> + # kernel-doc errors
> + sys.stderr.write(err)
> + if p.returncode != 0:
> + sys.exit(p.returncode)
> +
> + # restructured text errors
> + lines = statemachine.string2lines(out, 8, convert_whitespace=True)
> + lint_errors = restructuredtext_lint.lint(out, infile)
> + for error in lint_errors:
> + # Ignore INFO
> + if error.level <= 1:
> + continue
> +
> + print(error.source + ': ' + error.type + ': ' + error.full_message)
> + if error.line is not None:
> + print('Context:')
> + print('\t' + lines[error.line - 1])
> + print('\t' + lines[error.line])
> +
> +except Exception as e:
> + sys.stderr.write(str(e) + '\n')
> + sys.exit(1)
> --
> 2.1.4
>
>
> --
> Jani Nikula, Intel Open Source Technology Center
> --
> To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2016-10-05 20:25 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-01 19:46 [PATCH 00/15] improve function-level documentation Julia Lawall
2016-10-01 19:46 ` Julia Lawall
2016-10-01 19:46 ` [Drbd-dev] " Julia Lawall
2016-10-01 19:46 ` Julia Lawall
2016-10-01 19:46 ` [PATCH 01/15] UBIFS: " Julia Lawall
2016-10-01 19:46 ` Julia Lawall
2016-10-01 19:46 ` [PATCH 02/15] netlink: " Julia Lawall
2016-10-01 19:46 ` [PATCH 03/15] fscrypto: " Julia Lawall
2016-10-01 19:46 ` [PATCH 04/15] lru_cache: " Julia Lawall
2016-10-01 19:46 ` [Drbd-dev] " Julia Lawall
2016-10-01 19:46 ` [PATCH 05/15] dma-buf/sw_sync: " Julia Lawall
2016-10-01 19:46 ` Julia Lawall
2016-10-01 19:46 ` [PATCH 06/15] mfd: tc3589x: " Julia Lawall
2016-10-26 12:18 ` Lee Jones
2016-10-01 19:46 ` [PATCH 07/15] clk: sunxi: mod0: " Julia Lawall
2016-10-01 19:46 ` Julia Lawall
2016-10-01 19:46 ` Julia Lawall
2016-10-04 21:05 ` Maxime Ripard
2016-10-04 21:05 ` Maxime Ripard
2016-10-04 21:05 ` Maxime Ripard
2016-10-01 19:46 ` [PATCH 08/15] power: " Julia Lawall
2016-10-01 19:46 ` Julia Lawall
2016-10-19 2:59 ` Sebastian Reichel
2016-10-19 2:59 ` Sebastian Reichel
2016-10-01 19:46 ` [PATCH 09/15] gma500: " Julia Lawall
2016-10-01 19:46 ` Julia Lawall
2016-10-01 19:46 ` [PATCH 10/15] clk: keystone: " Julia Lawall
2016-10-01 19:46 ` Julia Lawall
2016-11-02 0:38 ` Stephen Boyd
2016-11-02 0:38 ` Stephen Boyd
2016-10-01 19:46 ` [PATCH 11/15] kobject: " Julia Lawall
2016-10-01 19:46 ` [PATCH 12/15] clk: tegra: dfll: " Julia Lawall
2016-10-01 19:46 ` Julia Lawall
2016-11-02 0:38 ` Stephen Boyd
2016-11-02 0:38 ` Stephen Boyd
2016-10-01 19:46 ` [PATCH 13/15] irqchip: vic: " Julia Lawall
2016-10-01 19:46 ` [PATCH 14/15] irqchip/metag-ext: " Julia Lawall
2016-10-01 19:46 ` Julia Lawall
2016-10-01 20:33 ` James Hogan
2016-10-01 20:33 ` James Hogan
2016-10-01 19:46 ` [PATCH 15/15] drm/omap: " Julia Lawall
2016-10-01 19:46 ` Julia Lawall
2016-10-01 20:19 ` [PATCH 00/15] " Joe Perches
2016-10-01 20:19 ` Joe Perches
2016-10-01 20:19 ` [Drbd-dev] " Joe Perches
2016-10-01 20:19 ` Joe Perches
2016-10-01 20:39 ` Julia Lawall
2016-10-01 20:39 ` Julia Lawall
2016-10-01 20:39 ` [Drbd-dev] " Julia Lawall
2016-10-01 20:39 ` Julia Lawall
2016-10-01 20:39 ` Julia Lawall
[not found] ` <1475351192-27079-1-git-send-email-Julia.Lawall-L2FTfq7BK8M@public.gmane.org>
2016-10-05 13:15 ` Daniel Vetter
2016-10-05 13:15 ` Daniel Vetter
2016-10-05 13:15 ` [Drbd-dev] " Daniel Vetter
2016-10-05 13:15 ` Daniel Vetter
2016-10-05 13:15 ` Daniel Vetter
2016-10-05 14:04 ` kernel-doc-rst-lint (was: Re: [PATCH 00/15] improve function-level documentation) Jani Nikula
2016-10-05 14:04 ` Jani Nikula
2016-10-05 14:04 ` [Drbd-dev] " Jani Nikula
2016-10-05 14:04 ` Jani Nikula
2016-10-05 14:04 ` Jani Nikula
2016-10-05 14:04 ` Jani Nikula
2016-10-05 14:04 ` Jani Nikula
2016-10-05 14:04 ` Jani Nikula
2016-10-05 17:27 ` Markus Heiser
2016-10-05 17:27 ` Markus Heiser
2016-10-05 17:27 ` [Drbd-dev] " Markus Heiser
2016-10-05 17:27 ` Markus Heiser
2016-10-05 17:27 ` Markus Heiser
2016-10-05 17:27 ` Markus Heiser
2016-10-05 20:25 ` Julia Lawall [this message]
2016-10-05 20:25 ` Julia Lawall
2016-10-05 20:25 ` [Drbd-dev] " Julia Lawall
2016-10-05 20:25 ` Julia Lawall
[not found] ` <CAKMK7uHT3FutHQuQQ3iwXmYbidB3AOs7AxnpaJD4MTqy0-QehQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-10-05 14:47 ` [PATCH 00/15] improve function-level documentation Julia Lawall
2016-10-05 14:47 ` Julia Lawall
2016-10-05 14:47 ` [Drbd-dev] " Julia Lawall
2016-10-05 14:47 ` Julia Lawall
2016-10-05 14:47 ` Julia Lawall
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.DEB.2.10.1610052224240.3130@hadrien \
--to=julia.lawall@lip6.fr \
--cc=daniel@ffwll.ch \
--cc=drbd-dev@lists.linbit.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=kernel-janitors@vger.kernel.org \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-metag@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.