Sphinx Autodoc与覆盖范围:我在这里遗漏了什么吗?

ipm*_*mcc 6 python python-sphinx autodoc

我正在尝试使用Sphinx来记录包含各种子包和子模块的Python包.我按照库存Sphinx快速入门脚本生成了各种文件,这些文件带有autodoc指令,而这些指令依次与html生成器一起生成,基于代码中现有的文档字符串生成了大多数预期的文档首次通过.凉.

现在进入sphinx.ext.coverage.由于项目在"quickstart"脚本之后存在,因此运行sphinx-build -b coverage <other args>根本不会产生任何有意义的输出,只需:

Undocumented Python objects
===========================
Run Code Online (Sandbox Code Playgroud)

......在它下面什么也没有.我故意删除一些文档字符串以确保,当然,没有警告.

我徘徊了一会儿,并最终尝试使用非autodoc指令,并且看,coverage突然看起来有效.可悲的是,autodoc功能性是Sphinx首先吸引人的一大部分.但是好的,.. py:module::为每个模块提供指令有帮助; 它似乎使coverage扩展知道我的模块,并从那里开始在我的python.txt有关成员的那些没有docstrings的模块中的条目.这很好,但它似乎意味着coverage要报告一个模块,该模块必须在doc文件中明确地手动声明,这有点降低了coverage工具的价值(即如果我向包中添加一个新模块,在我专门为它添加指令之前,它似乎不会被包含在覆盖率报告中.)所以,我所看到的autodoc似乎能够自动遍历子模块/包,但却coverage没有.

问题:我错过了什么吗?无法自动发现项目中出现的新代码似乎是"覆盖"工具的一个非常明显的错误.在我看来,标准的覆盖工具应该选择退出,而不是选择加入.

当我进一步推动时,我发现更多的证据表明coverage并且autodoc不是朋友.例如,对于手动声明模块,即使.. py:module::指令(如上所述),我觉得coverage是不是对的事情就像在捡autodocexclude-members指令.正如预期的那样,该指令在构建HTML时忽略了生成的输出中的成员匹配,但coverage仍然在其覆盖率报告中将这些成员报告为未记录的.从我的阅读

问题:我在文档中的哪个地方之间存在这种不兼容性coverage并且autodoc无法找到?或者,我又错过了什么?