Doxygen:在源代码浏览器中隐藏部分源代码

时间:2013-01-16 14:37:04

标签: c hide doxygen

  1. 通常我希望Doxygen允许查看记录文件的源代码。但我希望隐藏部分源代码。 我知道如何强制Doxygen不记录某些代码(例如/ cond / endcond),但是当点击“转到这个文件的源代码”时它仍会出现。

    我真正想要的是:如果某些东西没有以Doxygen风格进行评论,它将无法显示,不会出现在文档中,也不会出现在“转到此文件的源代码”中。 这应该是函数以及#-defines或其他的情况。

  2. 我使用@hideinitializer来隐藏#-define的初始值设定项。这在文档中很有效。但同样,初始化程序仍显示在源代码中。

  3. 有人有任何建议吗?

1 个答案:

答案 0 :(得分: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时)。


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

#!/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相关的注释将比上面显示的更多。