我刚刚安装并设置了Doxygen实例,但默认情况下它只能找到像这样在代码块中标记的TODO标签:
/**
* @todo Foo
*/
它似乎找不到:
// TODO Foo
// FIXME Bar
// @todo Baz
大多数处理解析的IDE和Bug跟踪器都可以很好地处理它们,有没有一种简单的方法来配置Doxygen以查找它们并将它们列为待办事项?
有许多我们可以使用的示例和方法:
对于带有有效Doxygen命令(例如\todo
)的一行注释,您将使用以下语法:
/// \todo Some (optional) text
注意这里有三个斜杠,而不是通常的两个。请参见doxygen文档中特殊文档块部分中第二个列表中的第三点。这可以用于向源代码添加新的待办事项。
通常可以通过在Doxygen配置文件中定义别名来定义自定义标签(例如FIXME
)。
ALIASES += FIXME="\todo"
这将允许您在源代码中编写\FIXME
,带有\FIXME
前缀的注释将包含在最终文档的待办事项列表中。问题在于,您必须使用\
(或@
)符号为您的别名添加前缀,并以三个前导斜杠开头的注释开始,如果您想将FIXME
保留在代码中,这不是一个选项。最后,另一种方法,也是我认为您正在寻找的方法,是使用INPUT_FILTER
配置文件选项预处理您的源文件。此选项定义了一个命令,该命令应用于doxygen构建文档之前的每个源文件,因此我们可以定义一个命令,将TODO
和FIXME
的实例替换为有效的doxygen标记。
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
命令对我来说不起作用。
GENERATE_TODOLIST
设置为 YES
?另外,你的 todo
是否为小写,并且尝试过使用 \todo
而不是 @todo
吗?最后,尝试使用 //! \todo {optional text}
而不是 /// \todo {optional text}
。 - ChrisTODO
和FIXME
行,而不是用Doxygen命令替换它们。如果是这种情况,我已经在上面的编辑中尝试回答了这个问题。 - ChrisINPUT_FILTER = "sed -Ee 's,(//|/\*).*(TODO|FIXME),\1! \\todo ,'"
将任何特殊注释替换为//! \todo
或/*! \todo
,具体取决于源中使用的注释样式。 - Florian
/// @todo Some text
(请注意三个正斜杠,而不是通常的两个)。请参见此页面上第二个列表中的第三点。 - Chris