4
  1. 一般来说,我希望 Doxygen 允许查看文档文件的源代码。但我希望隐藏部分源代码。我知道如何强制 Doxygen 不记录某些代码(例如使用 /cond /endcond),但是当单击“转到此文件的源代码”时它仍然会出现。

    我真正想要的是:如果某些内容没有以 Doxygen 样式注释,则它根本不会出现在任何地方,不会出现在文档中,也不会出现在“转到此文件的源代码”中。这应该是函数以及#-defines 或其他的情况。

  2. 我使用@hideinitializer 来隐藏#-defines 的初始化程序。这在文档中运行良好。但同样,初始化程序仍然显示在源代码中。

有人有什么建议吗?

4

1 回答 1

4

INPUT_FILTER您可以通过使用该选项指定过滤器脚本/程序来预处理源文件。然后,通过设置FILTER_SOURCE_FILE = YES,过滤后的源代码将在源浏览器中使用,而不是在原始源中使用。

从文档:

INPUT_FILTER 标记可用于指定 doxygen 应调用的程序来过滤每个输入文件。Doxygen 将通过执行(通过 popen())命令来调用过滤程序:

<filter> <input-file>

其中 是 INPUT_FILTER 标记的值, 是输入文件的名称。然后 Doxygen 将使用过滤器程序写入标准输出的输出。

如果 FILTER_SOURCE_FILES 标记设置为 YES,则输入过滤器(如果使用 INPUT_FILTER 设置)也将用于过滤用于生成要浏览的源文件的输入文件(即,当 SOURCE_BROWSER 设置为 YES 时)。


作为一个粗略的例子,使用以下源(保存filter.py在与 Doxyfile 相同的位置,并使其可执行):

#!/usr/bin/env python
import fileinput, re

# output all lines that does not start with // (but allow //!)
for line in fileinput.input():
  if not re.match(r'\s*//(?![!])', line):
    print line,

在 Doxyfile 中,设置:

INPUT_FILTER = ./filter.py
FILTER_SOURCE_FILE = YES

输出源浏览器现在将只显示不以//.

自然地,创建一个过滤脚本来丢弃所有 C 风格的注释,除了那些与 doxygen 相关的注释,这比上面显示的要复杂得多。

于 2013-01-16T15:01:55.920 回答