Doxygen не собирает все \ todo в глобальном списке задач - PullRequest
1 голос
/ 14 октября 2019

У меня проблема с доксигеном. Не все мои \ todo собраны в глобальном списке задач, но большинство из них. Я сделал простой C-пример с одним исходным файлом и файлом заголовка, а также файлом конфигурации, куда я поместил задачи везде, где я хочу, чтобы doxygen собирал их в глобальный список задач.

Моя глобальная задачаВ списке отсутствуют показанные в приведенном ниже фрагменте кода задачи, то есть те, которые находятся внутри тела моей общедоступной функции (test_todo12 в myFunc), а также те, которые находятся в файле cfg (test_todo16 и test_todo17), оба реализованы, как показано ниже.

test.h:

/**
 * Definition of test structure.
 */
typedef struct def_struct_
{
    int32_t first;     /**< First element.*/
    int32_t second;    /**< Second element. */
    int32_t third;     /**< third element. */
} def_struct_t;

/**************************************************************************************************/
/**
 * \brief   My func description.
 *
 * \param[ in ] test_param Input parameter to myFunc.
 *
 * \return      bool
 * \retval      false   false on non success.
 * \retval      true    true on success.
 *
**************************************************************************************************/
bool myFunc( uint32_t test_param );

test.c:

#include <stdint.h>
#include <stdbool.h>

#include "test.h"

#include "test.cfg"

bool myFunc( uint32_t test_param )
{
    uint32_t testVar = test_param ;

    //! This function does nothing. \todo test_todo12
    testVar++;

    return true;
}

test.cfg:

/** test cfg
 * \todo test_todo16
 */
 static def_struct_t test_cfg[2] = 
 {
     .first = 123 //! \todo test_todo17
 }

Я использую версию Doxygen1.8.14

Различия в моем файле конфигурации doxygen по сравнению с настройками по умолчанию заключаются в следующем (после попытки различных комбинаций):

OPTIMIZE_OUTPUT_FOR_C  = YES
TOC_INCLUDE_HEADINGS   = 1
TYPEDEF_HIDES_STRUCT   = YES
EXTRACT_PRIVATE        = YES
EXTRACT_STATIC         = YES
INTERNAL_DOCS          = YES
HIDE_SCOPE_NAMES       = YES
WARN_NO_PARAMDOC       = YES
RECURSIVE              = YES
EXCLUDE_PATTERNS       = */README.md 
EXAMPLE_RECURSIVE      = YES
SOURCE_BROWSER         = YES
GENERATE_TREEVIEW      = YES
USE_MATHJAX            = YES
GENERATE_LATEX         = NO
CLASS_DIAGRAMS         = NO
HAVE_DOT               = YES
UML_LOOK               = YES
DOT_PATH               = "C:\Program Files (x86)\Graphviz2.38\lib\release\lib"
DOTFILE_DIRS           = "C:\Program Files (x86)\Graphviz2.38\lib\release\lib" \ "C:\Program Files (x86)\Graphviz2.38\bin"
PLANTUML_JAR_PATH      = C:\tools\plantUML

and added *.cfg \ to FILE_PATTERNS

Ссылка на полный скомпилированный код и doxygenконфигурация (минимальный пример для показа этой проблемы): Ссылка на код

Когда я перехожу к публичной функции "myFunc", я вижу задачу, она просто отсутствует в глобальном списке задач.

Кажется, что файл cfg вообще не включен в документацию по doxygen, даже если он включен в файл C, и, таким образом, его следует рассматривать как часть этого файла? Или действительно необходимо сделать что-то дополнительное / специальное для включения этих файлов cfg? Если так, кто-то знает, что мне не хватает?

Я надеюсь, что кто-то может помочь мне решить мою проблему, может быть, задача в теле публичной функции - это даже ошибка?

С уважением, Джеспер

1 Ответ

1 голос
/ 14 октября 2019

Похоже, что здесь есть ряд проблем.

  • расширение cfg не известно для doxygen, и недостаточно только добавить его в FILE_PATTERNS, также язык, на котором оно написанонеобходимо сообщить doxygen, поэтому EXTENSION_MAPPING = cfg=C.
  • переменная в test.cfg пропускает точку с запятой (;) в конце. последняя строка должна читать };
  • комментарий внутри инициализации не рассматривается doxygen как документирование чего-либо (также в текущей версии 1.8.16 это не рассматривается). Проблема будет в том, где он находится, для \todo будет ясно, что он может попасть на страницу ToDo, но должен ли он также попадать и с самой переменной? и как насчет других комментариев (инициализация теперь переменные). В качестве примечания при использовании STRIP_CODE_COMMENTS=NO комментарий также не отображается при инициализации.
...