使用Doxygen记录不存在的成员

问题描述 投票:10回答:2

我正在尝试使用Doxygen来记录python类。该类通过d-bus公开一组属性,但这些属性在python类中没有相应的公共getter / setter。相反,它们是通过d-bus属性接口(Set / Get / GetAll / Introspect)实现的。

我想要做的是能够使用以下内容记录这些属性:

## @property package::Class::Name description

整个包:: Class工作(相同的方法查找函数,因此它找到正确的类)。

运行doxygen时出现以下错误:

warning: documented function ``package::Class::Name' was not declared or defined.

我可以接受警告,但不幸的是,该属性未能出现在为该类生成的文档中,因此它不仅是一个警告,而且也是静音。

所以,我的问题是,如果可以的话,我如何让不存在的属性成员出现在生成的文档中?

python properties doxygen
2个回答
3
投票

if 0:块中定义属性:

## @class X
## @brief this is useless
class X:
    if 0:
        ## @brief whatevs is a property that doesn't exist in spacetime
        ##
        ## It is designed to make bunny cry.
        whatevs = property

这将导致它存在于文档中(在doxygen 1.8.1.2-1上使用debian-squeeze进行测试)。该属性永远不会在运行时存在,实际上它看起来像python字节码优化器完全消除了if语句及其主体。


0
投票

我之前研究过类似的东西,却找不到直接的方法来哄骗Doxygen记录一个未定义的成员。您可以在这里使用两个基本的kludges:

1.)为实际代码中实际不存在的库存生成一个虚拟对象(或虚拟成员)。

2.)如果你需要的调整是相当可预测的和常规的,你可以为doxygen写一个INPUT_FILTER来获取你的文件并在解析前转换它们。此方法存在一些问题 - 主要是如果您计划在文档中包含代码并且过滤器必须添加/删除文件中的行,则它指示的行号将关闭,并且显示的任何代码窗口都会显示文档将以这么多行排除。您还可以选中筛选显示来源的选项以进行调整,但是根据您的文档使用者是谁,可能会让Doxygen中的副本混淆不完​​全匹配真实来源中的内容。

在我们的例子中,我们使用一个python脚本,Doxygen从命令行运行,文件路径作为arg。我们阅读指示的文件并写下我们想要的Doxygen来解释为stdout。如果您需要过滤doxygen中显示的源副本,也可以将FILTER_SOURCE_FILES设置为YES

© www.soinside.com 2019 - 2024. All rights reserved.