【问题标题】:Doxygen filter format?Doxygen 过滤器格式?
【发布时间】:2015-12-09 09:07:23
【问题描述】:

与我的团队一起创建需要记录的软件。我发现 doxygen 似乎是一个不错的程序。虽然不支持我们的编程语言(RAPID)。

昨天我问了一个关于这个的问题。阿尔伯特很友善地提供了正确方向的线索。过滤器应该是正确的方法,而不是预处理器。

但是我没有提供可以在这里找到的 RAPID 代码的语法: http://futurecnc.code.arc.cmu.edu/wp/wp-content/uploads/2011/12/RAPID-Reference-Manual-Instructions.pdf

我在 doxygen 网站上找到了有关创建过滤器的帮助指南。我还找到了一个由 Bert Jordan 为 perl 创建的示例过滤器:
http://www.doxygen.nl/helpers.html

一些问题:

  1. 过滤器是正确的方法,还是需要预处理器?
  2. 过滤器到底在做什么?
  3. Doxygen 有词法扫描器,过滤器必须使用哪种格式才能将快速代码转换为支持的语言?

我希望,我现在已经给出了清晰的描述:)

编辑:我正在搜索有关如何创建实际过滤器的信息。 有人知道这个的好来源吗?

【问题讨论】:

  • 关于第 3 点和第 4 点:过滤器应该扫描输入文件,作为过滤器的参数,将其转换为 doxygen 可以理解的语言并全部写入标准输出。 Doxygen 将从过滤器的“标准输出”中挑选结果。
  • 嗨@albert,再次感谢您的回答。似乎找不到任何关于如何实际编程过滤器的指南或信息,你知道一些来源吗?
  • 我也不知道过滤器格式的来源。过滤器的输出应该是 doxygen 本地理解的源文件(在标准输出上)。
  • 再次感谢,但必须有一些关于如何添加过滤器的文档?你到底是什么意思:“过滤器的输出应该是源文件(在标准输出上)”?
  • 有关添加过滤器的有限文档位于 Doxyfile 中(以及手册的配置章节第 23 章。Doxyfile 和手册或多或少相同,因为它们是从相同的资源)。 “过滤器的输出应该是源文件(在标准输出上)”,意味着过滤器应该将原始文件转换为“新”格式并将其转储到标准输出(因此过滤器在自己的内存空间中创建一个新文件并将其转储到标准输出。最简单的过滤器是“猫”,它将其输入转储到标准输出)。

标签: filter doxygen


【解决方案1】:

the helpers section 下的 doxygen 网站上有一些其他语言的过滤器示例。

我在我的一个项目中为 Bash 使用了 doxygen 过滤器(此处未列出)。过滤器非常简单,可能是一个很好的例子。此过滤器可在Anvils github 获得。

本质上,它只是一个约 130 行的 sed 脚本,将 bash 转换为 doxygen 可以解析的准 C。您可以为 RAPID 编写自己的 sed 脚本。

你应该将它添加到你的 Doxyfile 中:

# Tell doxygen to handle files with sh extension as C files
EXTENSION_MAPPING = sh=C

# Tell doxygen to run sh files through the below sed script
FILTER_PATTERNS        = *.sh=MY_PATH/doxygen-bash.sed

还有一个通过帮助页面here 提供的python 示例。

要理解的主要部分是过滤器可以是您喜欢编写的任何内容。 Python、sed、shell 等。Doxygen 只是调用你的过滤器,通过它运行代码,你的过滤器应该输出 Doxygen 可以解析的语言。

【讨论】:

  • 谢谢你是我今天的英雄!但是我在帮助页面上找不到任何代码示例,我是否忽略了什么?
  • 查看我的补充,过滤器只会接收一个 RAPID 文件,然后输出一个将其扭曲为 C 类文件的文件。过滤器可以用您喜欢的任何语言编写。
  • ok 谢谢你的澄清,现在我明白了(我想哈哈)。但它只是一个单独的程序。是否可以在运行时从 doxygen 调用过滤器程序,或者只是将其作为单独的程序运行。
  • Doxyfile 中的 FILTER_PATTERNS 标记使 doxygen 在 doxygen 遇到该扩展时调用该程序/脚本。
  • 最后我想我理解它以及如何解决这个问题。只是为了验证我是否理解它:我必须创建一个程序(过滤器),当它开始运行时由 doxygen 调用。可以通过更改 doxyfile 的设置来调用它。其次,过滤器功能是将语言语法(RAPID)转换为c代码语法,因此doxygen的laxilal扫描仪可以解释它并使用UML图表创建html页面。这是正确的吗?
猜你喜欢
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 2018-07-18
  • 2013-12-24
  • 2018-02-14
  • 2016-02-03
相关资源
最近更新 更多