【问题标题】:Can Doxygen easily be configured to recognise TODO and FIXME lines?Doxygen 可以轻松配置为识别 TODO 和 FIXME 行吗?
【发布时间】:2012-01-22 01:35:46
【问题描述】:

我刚刚安装并设置了一个 Doxygen 实例,但开箱即用,当标记在如下块中时,它只会在代码中找到 TODO 标签:

/**
 * @todo Foo
 */

好像没找到:

// TODO Foo
// FIXME Bar
// @todo Baz

大多数处理解析的 IDE 和错误跟踪器都可以很好地使用它们,是否有一种简单的方法可以配置 Doxygen 以找到它们并将它们列为 ToDo 项?

【问题讨论】:

  • Doxygen cmets 往往位于特殊的注释块中,不是吗?我认为对于单行注释,您将使用/// @todo Some text(注意三个正斜杠,而不是通常的两个)。请参阅this 页面上第二个列表中的第三点。
  • 谢谢,我完全错过了那个页面,会去看看。 [我通常不那么懒惰,我只是时间紧迫,但尝试在一边做这件事,所以至少我们有 /something/ :)]
  • @Chris,您应该输入它作为答案,Iain,如果它解决了您的问题,您应该接受它。
  • @tomlogic 感谢您的建议 - 我现在已经这样做了。

标签: doxygen todo


【解决方案1】:

我们可以使用许多示例和方法:

  • 对于包含有效 doxygen 命令的单行注释(例如 \todo),您可以使用

    /// \todo Some (optional) text
    

    注意三个正斜杠,而不是通常的两个。请参阅 doxygen 文档的 special documentation blocks 部分的第二个列表中的第三点。这可用于将新的待办事项添加到您的源代码中。

  • 通常可以通过在 Doxygen 配置文件中定义别名来定义自定义标签(如 FIXME)。例如

    ALIASES += FIXME="\todo"
    

    这将允许您在源代码中编写\FIXME,并且以\FIXME 为前缀的cmets 将包含在最终文档的待办事项列表中。这里的问题是你必须在你的别名前面加上\(或@)符号,并以三个前导正斜杠开始注释,如果你想在你的代码中保留FIXMEs , 不是一个选项。

  • 最后,我认为您正在寻找的另一种方法是使用 INPUT_FILTER 配置文件选项预处理您的源文件。这个选项定义了一个命令,在 doxygen 构建文档之前应用到每个源文件,因此我们可以定义一个命令,用有效的 doxygen 标记替换 TODOFIXME 的实例。

     INPUT_FILTER = "sed -e 's/\/\/.*FIXME/\/\/\/ \\todo/'"
    

    此过滤器用/// \todo 替换所有// FIXME 实例(在//FIXME 之间有任意数量(或没有)空格)。这种替换仅由 doxygen 在内部进行:您的源文件不会在磁盘上修改。

注意:最后一点的灵感来自对问题 Getting doxygen and MSVC TODO tags to work together 的公认答案。但是,该答案使用了FILE_VERSION_FILTER 配置选项而不是INPUT_FILTER。我认为后者(INPUT_FILTER)在这里实际上更合适。此外,该答案中使用的sed 命令对我不起作用。

【讨论】:

  • 这也是我能找到的全部,哼哼:( 没有时间查看 Doxygen 的配置或源代码以了解其工作原理,接受答案为“不,它只是找到严格按照文档标记的 TODO 和 FIXME 语句”,暂时代替其他答案(但不确定这是否完全正确)。感谢您的回答。
  • 您的配置文件中是否将GENERATE_TODOLIST 设置为YES?另外,您的todo 是小写的吗,您是否尝试过\todo 而不是@todo?最后,尝试使用//! \todo {optional text} 而不是/// \todo {optional text}
  • 是的,我遇到的问题是它没有以支持的文档格式显示 TODO 和 FIXME 样式注释(正如我在我的问题中所说的那样工作正常),但正是照原样(即使用现有代码库,而不是考虑使用 Doxygen 编写)。
  • @IainCollins 抱歉 - 我完全误解了这个问题。如果我现在理解正确,您希望 doxygen 在源代码中获取 TODOFIXME 行,而不用 Doxygen 命令替换它们。如果是这种情况,我试图在上面的编辑中回答这个问题。
  • 更高级的过滤器可以捕获不同样式的 cmets:此过滤器也适用于 C 样式注释 (/* ... /) 和 'TODO' cmets:INPUT_FILTER = "sed -Ee 's,(//|/\*).*(TODO|FIXME),\1! \\todo ,'" 替换任何*带有//! \todo/*! \todo的特殊注释,分别对应源代码中使用的推荐样式。
猜你喜欢
  • 2015-03-25
  • 1970-01-01
  • 2020-06-27
  • 2011-08-18
  • 2021-05-18
  • 2011-06-19
  • 2011-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多