Можно ли легко настроить Doxygen для распознавания строк TODO и FIXME?

Я только что установил и настроил экземпляр Doxygen, но из коробки он находит только теги TODO в коде, если они отмечены в блоке вроде:

/**
 * @todo Foo
 */

Кажется, он не находит:

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

Большинство IDE и трекеров ошибок, которые обрабатывают синтаксический анализ, подходят для них. Есть ли простой способ настроить Doxygen, чтобы найти их и перечислить как элементы ToDo?

24
задан Iain Collins 16 December 2011 в 14:34
поделиться

1 ответ

Существует ряд примеров и методов, которые мы можем использовать:

  • Для однострочного комментария с действительными командами 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, использованная в этом ответе, не работает для меня.

41
ответ дан 28 November 2019 в 23:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: