From: Petr Špaček Date: Thu, 12 May 2022 17:16:52 +0000 (+0200) Subject: Warn about statements in grammar not described in docs X-Git-Tag: v9.19.3~16^2~20 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=cbad1803a55ded505c6dc042cd75c8d0b0dc0ac9;p=thirdparty%2Fbind9.git Warn about statements in grammar not described in docs Skip over obsolete options. --- diff --git a/doc/arm/_ext/iscconf.py b/doc/arm/_ext/iscconf.py index cc03766475c..a6ecf212fdd 100644 --- a/doc/arm/_ext/iscconf.py +++ b/doc/arm/_ext/iscconf.py @@ -268,6 +268,29 @@ def domain_factory(domainname, domainlabel, todolist, grammar): self.log_statement_overlap(new[name], old[name]) old.update(new) + def check_consistency(self): + """Sphinx API""" + defined_statements = set( + obj["signature"] for obj in self.data["statements"].values() + ) + statements_in_grammar = set(self.statement_blocks) + missing_statement_sigs = statements_in_grammar.difference( + defined_statements + ) + for missing in missing_statement_sigs: + grammars = self.statement_grammar_groups[missing] + if len(grammars) == 1: + flags = grammars[0][0].subgrammar.get("_flags", []) + if ("obsolete" in flags) or ("test only" in flags): + continue + + logger.warning( + "statement %s is defined in %s grammar but is not described" + " using .. statement:: directive", + missing, + domainlabel, + ) + @classmethod def process_statementlist_nodes(cls, app, doctree, fromdocname): """