Я только что установил и настроил экземпляр Doxygen, но из коробки он находит только теги TODO в коде, если они отмечены в блоке вроде:
/**
* @todo Foo
*/
Кажется, он не находит:
// TODO Foo
// FIXME Bar
// @todo Baz
Большинство IDE и трекеров ошибок, которые обрабатывают синтаксический анализ, подходят для них. Есть ли простой способ настроить Doxygen, чтобы найти их и перечислить как элементы ToDo?
Существует ряд примеров и методов, которые мы можем использовать:
Для однострочного комментария с действительными командами doxygen (например, \todo
) вы должны использовать
/// \todo Some (optional) text
Обратите внимание на три слеша, а не на обычные два. См. Пункт три во втором списке в разделе блоков специальной документации документации по доксигену. Это может быть использовано для добавления новых элементов todo в ваш исходный код.
Обычно можно определить пользовательские теги (например, FIXME
), определив псевдоним в файле конфигурации Doxygen. Например,
ALIASES += FIXME="\todo"
, который позволит вам написать \FIXME
в вашем исходном коде, а комментарии с префиксом \FIXME
будут включены в ваш список задач в окончательной документации. Проблема здесь заключается в том, что вы должны добавить к псевдонимам префикс с символом \
(или @
) и начать комментарий с трех первых косых черт, которые, если вы хотите оставить FIXME
в вашем коде, как они есть , это не вариант.
Наконец, альтернативный метод, который, я думаю, вы ищете, состоит в предварительной обработке ваших исходных файлов с использованием опции файла конфигурации INPUT_FILTER
. Эта опция определяет команду, которая применяется к каждому из ваших исходных файлов до того, как doxygen создаст документацию, поэтому мы можем определить команду, которая заменяет экземпляры TODO
и FIXME
допустимой разметкой doxygen.
INPUT_FILTER = "sed -e 's/\/\/.*FIXME/\/\/\/ \\todo/'"
Этот фильтр заменяет все экземпляры // FIXME
(с любым количеством (или ни одного) пробела между //
и FIXME
) на /// \todo
. Эта замена выполняется только внутри doxygen: ваши исходные файлы не изменяются на диске.
Примечание. Этот последний момент был вдохновлен принятым ответом на вопрос Как заставить тэги doxygen и MSVC TODO работать вместе . Однако в этом ответе использовалась опция конфигурации FILE_VERSION_FILTER
, а не INPUT_FILTER
. Я думаю, что последнее (INPUT_FILTER
) на самом деле здесь более уместно. Кроме того, команда sed
, использованная в этом ответе, не работает для меня.