Can Doxygen可以轻松配置识别TODO和FIXME线路吗?

时间:2011-12-16 14:34:41

标签: doxygen todo

我刚刚安装并设置了Doxygen实例,但开箱即用时,它只会在代码中找到代码中的TODO代码:

/**
 * @todo Foo
 */

似乎没有找到:

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

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

1 个答案:

答案 0 :(得分:40)

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

  • 对于带有效doxygen命令的单行注释(例如\todo),您将使用

    /// \todo Some (optional) text
    

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

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

    ALIASES += FIXME="\todo"
    

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

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

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

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

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