From: Peter Maydell <peter.maydell@linaro.org>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [PATCH 2/8] docs: tweak kernel-doc for QEMU coding standards
Date: Mon, 2 Dec 2019 18:01:16 +0000 [thread overview]
Message-ID: <CAFEAcA-svKVfBGRfwX6d5woqOW0z--rV3-gC9Qi9NqypYfZ=hw@mail.gmail.com> (raw)
In-Reply-To: <20191129140217.17797-3-pbonzini@redhat.com>
On Fri, 29 Nov 2019 at 14:02, Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> Surprisingly, QEMU does have a pretty consistent doc comment style and
> it is not very different from the Linux kernel's. Of the documentation
> "sigils", only "#" separates the QEMU doc comment style from Linux's,
> and it has 200+ instances vs. 6 for the kernel's '&struct foo' (all in
> accel/tcg/translate-all.c), so it's clear that the two standards are
> different in this respect. In addition, our structs are typedefed and
> recognized by CamelCase names.
>
> Adjust kernel-doc's parser for these two aspects of the QEMU coding
> standards. The patch has been valid, with hardly any change, for over
> two years, so it should not be an issue to keep kernel-doc in sync with
> the Linux copy.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> scripts/kernel-doc | 28 +++++++++++++++++++---------
> 1 file changed, 19 insertions(+), 9 deletions(-)
>
> diff --git a/scripts/kernel-doc b/scripts/kernel-doc
> index 81dc91760b..af470eb321 100755
> --- a/scripts/kernel-doc
> +++ b/scripts/kernel-doc
> @@ -215,12 +215,12 @@ my $type_func = '(\w+)\(\)';
> my $type_param = '\@(\w*((\.\w+)|(->\w+))*(\.\.\.)?)';
> my $type_fp_param = '\@(\w+)\(\)'; # Special RST handling for func ptr params
> my $type_env = '(\$\w+)';
> -my $type_enum = '\&(enum\s*([_\w]+))';
> -my $type_struct = '\&(struct\s*([_\w]+))';
> -my $type_typedef = '\&(typedef\s*([_\w]+))';
> -my $type_union = '\&(union\s*([_\w]+))';
> -my $type_member = '\&([_\w]+)(\.|->)([_\w]+)';
> -my $type_fallback = '\&([_\w]+)';
> +my $type_enum = '#(enum\s*([_\w]+))';
> +my $type_struct = '#(struct\s*([_\w]+))';
> +my $type_typedef = '#(([A-Z][_\w]*))';
> +my $type_union = '#(union\s*([_\w]+))';
> +my $type_member = '#([_\w]+)(\.|->)([_\w]+)';
perlre(1) says that \w includes _' so I think
'[_\w]' is a funny way of writing '\w', but on
the other hand it's in the existing code too...
> +my $type_fallback = '(?!)'; # this never matches
> my $type_member_func = $type_member . '\(\)';
>
> # Output conversion substitutions.
> @@ -1050,6 +1050,14 @@ sub output_blockhead {
> sub dump_declaration($$) {
> no strict 'refs';
> my ($prototype, $file) = @_;
> + if ($decl_type eq 'type name') {
> + if ($prototype =~ /^(enum|struct|union)\s+/) {
> + $decl_type = $1;
> + } else {
> + return;
> + }
> + }
> +
> my $func = "dump_" . $decl_type;
> &$func(@_);
> }
> @@ -1878,7 +1886,7 @@ sub process_name($$) {
> }
> elsif (/$doc_decl/o) {
> $identifier = $1;
> - if (/\s*([\w\s]+?)(\(\))?\s*-/) {
> + if (/\s*([\w\s]+?)(\s*-|:)/) {
> $identifier = $1;
> }
>
> @@ -1888,7 +1896,7 @@ sub process_name($$) {
> $contents = "";
> $section = $section_default;
> $new_start_line = $. + 1;
> - if (/-(.*)/) {
> + if (/[-:](.*)/) {
> # strip leading/trailing/multiple spaces
> $descr= $1;
> $descr =~ s/^\s*//;
These two bits seem to be a third thing not mentioned
in the commit message -- permitting either colon or
hyphen in the "Thing: short description" introductory line,
where kernel style insists on a hyphen.
(You could make the argument that this is an unnecessary
drift from the kernel-doc style and we should just fix
up all those colons...)
> @@ -1906,7 +1914,9 @@ sub process_name($$) {
> ++$warnings;
> }
>
> - if ($identifier =~ m/^struct\b/) {
> + if ($identifier =~ m/^[A-Z]/) {
> + $decl_type = 'type name';
> + } elsif ($identifier =~ m/^struct\b/) {
> $decl_type = 'struct';
> } elsif ($identifier =~ m/^union\b/) {
> $decl_type = 'union';
The match for 'type name' is pretty wide but I guess
we can find out through experience if we need to narrow it.
thanks
-- PMM
next prev parent reply other threads:[~2019-12-02 18:02 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-29 14:02 [PATCH for-5.0 0/8] docs: integrate doc comments with Sphinx build Paolo Bonzini
2019-11-29 14:02 ` [PATCH 1/8] docs: import Linux kernel-doc script and extension Paolo Bonzini
2019-12-02 17:50 ` Peter Maydell
2019-11-29 14:02 ` [PATCH 2/8] docs: tweak kernel-doc for QEMU coding standards Paolo Bonzini
2019-12-02 18:01 ` Peter Maydell [this message]
2019-12-02 18:17 ` Paolo Bonzini
2020-10-02 18:34 ` Eduardo Habkost
2020-10-02 18:43 ` Peter Maydell
2020-10-02 18:46 ` Eduardo Habkost
2020-10-02 18:50 ` Paolo Bonzini
2020-10-02 19:18 ` Eduardo Habkost
2019-11-29 14:02 ` [PATCH 3/8] docs/conf.py: Enable use of kerneldoc sphinx extension Paolo Bonzini
2019-11-29 14:02 ` [PATCH 4/8] Makefile: disable Sphinx nitpicking Paolo Bonzini
2019-11-29 14:02 ` [PATCH 5/8] bitops.h: Silence kernel-doc complaints Paolo Bonzini
2019-11-29 14:02 ` [PATCH 6/8] docs: Create bitops.rst as example of kernel-docs Paolo Bonzini
2019-11-29 14:02 ` [PATCH 7/8] memory.h: Silence kernel-doc complaints Paolo Bonzini
2019-12-02 18:04 ` Peter Maydell
2019-11-29 14:02 ` [PATCH 8/8] docs: add memory API reference Paolo Bonzini
2019-12-02 18:05 ` Peter Maydell
2019-11-30 1:54 ` [PATCH for-5.0 0/8] docs: integrate doc comments with Sphinx build no-reply
2019-12-02 18:06 ` Peter Maydell
2019-12-02 18:13 ` Paolo Bonzini
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='CAFEAcA-svKVfBGRfwX6d5woqOW0z--rV3-gC9Qi9NqypYfZ=hw@mail.gmail.com' \
--to=peter.maydell@linaro.org \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).