qemu/docs/sphinx
John Snow ef137a2241 docs/qapi-domain: add warnings for malformed field lists
Normally, Sphinx will silently fall back to its standard field list
processing if it doesn't match one of your defined fields. A lot of the
time, that's not what we want - we want to be warned if we goof
something up.

For instance, the canonical argument field list form is:

:arg type name: descr

This form is captured by Sphinx and transformed so that the field label
will become "Arguments:". It's possible to omit the type name and descr
and still have it be processed correctly. However, if you omit the type
name, Sphinx no longer recognizes it:

:arg: this is not recognized.

This will turn into an arbitrary field list entry whose label is "Arg:",
and it otherwise silently fails. You may also see failures for doing
things like using :values: instead of :value:, or :errors: instead of
:error:, and so on. It's also case sensitive, and easy to trip up.

Add a validator that guarantees all field list entries that are the
direct child of an ObjectDescription use only recognized forms of field
lists, and emit a warning (treated as error by default in most build
configurations) whenever we detect one that is goofed up.

However, there's still benefit to allowing arbitrary fields -- they are
after all not a Sphinx invention, but perfectly normal docutils
syntax. Create an allow list for known spellings we don't mind letting
through, but warn against anything else.

Signed-off-by: John Snow <jsnow@redhat.com>
Message-ID: <20250311034303.75779-27-jsnow@redhat.com>
Acked-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
2025-03-11 10:10:57 +01:00
..
compat.py docs/qapi-domain: add compatibility node classes 2025-03-11 10:07:03 +01:00
dbusdoc.py docs/sphinx: add sphinx modules to include D-Bus documentation 2021-12-21 10:50:21 +04:00
dbusdomain.py meson: Pass -j option to sphinx 2023-05-18 08:53:50 +02:00
dbusparser.py docs/sphinx: add sphinx modules to include D-Bus documentation 2021-12-21 10:50:21 +04:00
depfile.py docs/sphinx: include kernel-doc script as a dependency 2025-01-17 10:45:38 +00:00
fakedbusdoc.py meson: Pass -j option to sphinx 2023-05-18 08:53:50 +02:00
hxtool.py docs: remove Sphinx 1.x compatibility code 2024-07-12 16:46:21 -04:00
kerneldoc.py docs: remove Sphinx 1.x compatibility code 2024-07-12 16:46:21 -04:00
qapi_domain.py docs/qapi-domain: add warnings for malformed field lists 2025-03-11 10:10:57 +01:00
qapidoc.py docs/qapidoc: remove example section support 2025-03-04 07:11:06 +01:00
qmp_lexer.py meson: Pass -j option to sphinx 2023-05-18 08:53:50 +02:00