Можно ли легко настроить Doxygen для распознавания линий TODO и FIXME? - PullRequest
24 голосов
/ 16 декабря 2011

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

/**
 * @todo Foo
 */

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

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

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

1 Ответ

40 голосов
/ 04 января 2012

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

  • Для однострочного комментария с действительными командами doxygen (например, \todo) вы должны использовать

    /// \todo Some (optional) text
    

    Обратите внимание на три слеша, а не на обычные два. См. Пункт три во втором списке в разделе специальных документов в документации по Doxygen. Это можно использовать для добавления новых элементов 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, использованная в этом ответе, не работает для меня.

...