我正在尝试使用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.
我可以接受警告,但不幸的是该属性未能出现在为该类生成的文档中,因此它不仅是一个警告,而且也是静音。
所以,我的问题是,如果可以,我如何让不存在的属性成员出现在生成的文档中?
答案 0 :(得分: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语句及其主体。
答案 1 :(得分:0)
我之前研究过类似的东西,却找不到直接的方法来哄骗Doxygen记录未定义的成员。您可以在这里使用两个基本的克拉德:
1。)为实时代码中实际不存在的doxygen生成虚拟对象(或虚拟成员)。
2。)如果您需要的调整是相当可预测的,那么您可以为doxygen写一个INPUT_FILTER
来获取文件并在解析之前转换它们。此方法存在一些问题 - 主要是如果您计划在文档中包含代码并且过滤器必须添加/删除文件中的行,则它指示的行号将关闭,并且显示的任何代码窗口都会显示文档将以这么多行排除。您还可以选中筛选显示来源的选项以进行调整,但是根据您的文档使用者是谁,可能会让Doxygen中的副本混淆不完全匹配真实来源中的内容。
在我们的例子中,我们使用一个python脚本,Doxygen从命令行运行,文件路径为arg。我们阅读指示的文件并写下我们想要的Doxygen来解释为stdout。如果您需要过滤doxygen中显示的源副本,也可以将FILTER_SOURCE_FILES
设置为YES
。