Подтвердить что ты не робот

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

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

/**
 * @todo Foo
 */

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

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

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

4b9b3361

Ответ 1

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

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

    /// \todo Some (optional) text
    

    Обратите внимание на три косая черта, а не на обычные две. См. Пункт 3 во втором списке в разделе специальных блоков документации в документации Doxygen. Это можно использовать для добавления новых элементов todo в исходный код.

  • Обычно можно определить пользовательские теги (например, FIXME), указав псевдоним в файле конфигурации Doxygen. Например

    ALIASES += FIXME="\todo"
    

    который позволит вам написать \FIXME в вашем исходном коде, а комментарии с префиксом \FIXME будут включены в ваш список todo в окончательной документации. Проблема здесь в том, что вы должны префиксные псевдонимы с символом \ (или @) и начинайте комментарий с трех ведущих косых черт, которые, если вы хотите оставить 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, используемая в этом ответе, не работает для меня.