如何从 doxygen 中排除 python 代码中的某些方法?



我想从python代码创建一个doxygen文档,但我想从类中排除一些方法。

我没有在 doxygen 配置文件中找到任何可以直接排除类方法的内容,但我在这里找到了问题 4。所以在我设置的配置中:

ENABLE_PREPROCESSING   = YES
PREDEFINED             = DOXYGEN_SHOULD_SKIP_THIS

在我做的代码中

#ifndef DOXYGEN_SHOULD_SKIP_THIS
def log(text):
....
...
#endif /* DOXYGEN_SHOULD_SKIP_THIS */

为了从文档中排除log方法,我再次运行了doxygen,但没有预期的结果。log的文档仍在文档中...

我做错了什么?如何正确排除一个方法被记录或出现在调用方/卡利图中?

提到的文档有点过时(从 1.3.5 版开始,即从 2004 年开始;目前我们有 1.8.14 版(。请始终使用 http://www.doxygen.nl 的官方文档。

预处理不是在所有语言上完成的,也不是针对 python 完成的(据我所知,python 没有预处理功能(。

当前文档指出:

18.5 如何让doxygen忽略一些代码片段?

新的也是最简单的方法是添加一个注释块,在开头添加一个带有cond命令的注释块,并在应忽略的代码段的末尾添加一个带有endcond命令的注释块。当然,这应该在同一个文件中。 但您也可以使用 doxygen 的预处理器来实现这一点: 如果你把

#ifndef DOXYGEN_SHOULD_SKIP_THIS
/* code that must be skipped by doxygen */
#endif /* DOXYGEN_SHOULD_SKIP_THIS */

在应该隐藏并放置的块周围:

PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS

在配置文件中,只要ENABLE_PREPROCESSING设置为YES,doxygen 就应该跳过所有块。

一个工作示例:

def log_shown(text):
pass
##cond
def log_not_shown(text):
pass
##endcond

请注意,由于示例中缺少文档,您必须将配置项EXTRACT...设置为YES

有关condendcond请参阅文档,另请查看配置设置:ENABLED_SECTIONS

您可以尝试使用过滤器(请参阅filters4Doxygen(作为预处理器来获取结果。

您必须为 pyton 创建一个自定义过滤器(用作示例 BATdoxFilter.bat(sh((: 过滤器"排除"将在bin/rgx/excpt中定义。RGX,使用正则表达式:

## rule 1, /*skip*/.../*endskip*/  is destroid
regex1=(?mis)/\*skip(.)*?endskip\*/
replacement1=

注意:我没有测试正则表达式,所以可能需要一些调整:请参阅 https://github.com/msillano/regexfilter/blob/master/README.pdf

我希望这能有所帮助。

最好的问候,理学硕士

最新更新