【问题标题】:Doxygen: hiding part of source code in source code browserDoxygen:在源代码浏览器中隐藏部分源代码
【发布时间】:2013-01-16 14:37:04
【问题描述】:
  1. 通常我希望 Doxygen 允许查看文档文件的源代码。但我希望隐藏部分源代码。 我知道如何强制 Doxygen 不记录某些代码(例如使用 /cond /endcond),但是在单击“转到此文件的源代码”时它仍然出现。

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

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

有人有什么建议吗?

【问题讨论】:

    标签: c hide doxygen


    【解决方案1】:

    您可以通过使用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 风格的 cmets,除了那些与 doxygen 相关的内容,这将比上面显示的要复杂得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-25
      • 2014-02-12
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-14
      • 1970-01-01
      相关资源
      最近更新 更多