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

Iai*_*ins 24 doxygen todo

我刚刚安装并设置了Doxygen实例,但开箱即用它只在代码中找到TODO标签,如下所示:

/**
 * @todo Foo
 */
Run Code Online (Sandbox Code Playgroud)

它似乎没有找到:

// TODO Foo
// FIXME Bar
// @todo Baz
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*ris 41

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

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

    /// \todo Some (optional) text
    
    Run Code Online (Sandbox Code Playgroud)

    注意三个正斜杠,而不是通常的两个斜杠.请参阅doxygen文档的特殊文档块部分的第二个列表中的第3点.这可用于向源代码添加新的待办事项.

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

    ALIASES += FIXME="\todo"
    
    Run Code Online (Sandbox Code Playgroud)

    这将允许您\FIXME在源代码中写入,前缀的注释\FIXME将包含在最终文档中的todo列表中.这里的问题是你必须在别名前加上\(或@)符号,并用三个前导斜杠开始注释,如果你想将FIXMEs 保留在你的代码中,则不是一个选项.

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

     INPUT_FILTER = "sed -e 's/\/\/.*FIXME/\/\/\/ \\todo/'"
    
    Run Code Online (Sandbox Code Playgroud)

    该过滤器替换的所有实例// FIXME(与空白之间的任何量的(或无)//FIXME)用/// \todo.此替换仅在doxygen内部进行:您的源文件不会在磁盘上修改.

注意:最后一点的灵感来自于获得doxygen和MSVC TODO标签协同工作的问题.但是,该答案使用的是FILE_VERSION_FILTER配置选项而不是INPUT_FILTER.我认为后者(INPUT_FILTER)实际上更合适.此外,该sed答案中使用的命令对我不起作用.