1

我对 doxygen 有疑问。并非我所有的 \todo 都收集在全局待办事项列表中,但其中大部分都收集了。我用一个源文件和头文件以及一个配置文件制作了一个简单的 C 示例,我在其中放置了待办事项,我希望 doxygen 将它们收集到全局待办事项列表中。

我的全局待办事项列表缺少以下代码片段中显示的待办事项,这意味着我的公共函数体内的待办事项(myFunc 中的 test_todo12)以及 cfg 文件中的待办事项(test_todo16 和 test_todo17),两者都按所示实现以下。

测试.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 );

测试.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;
}

测试.cfg:

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

我正在使用 doxygen 1.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 文件做一些额外/特殊的事情?如果是这样,有人知道我错过了什么吗?

我希望有人能帮我解决我的问题,也许公共函数体中的 todo 甚至是一个错误?

问候杰斯珀

4

1 回答 1

1

看起来这里有很多问题。

  • doxygen 不知道扩展 cfg 并且仅添加它FILE_PATTERNS是不够的,并且必须使 doxygen 知道它所使用的语言,所以EXTENSION_MAPPING = cfg=C.
  • 中的变量test.cfg末尾缺少分号 ( ;)。最后一行应该是};
  • doxygen 不会将初始化中的注释视为记录某些内容(在当前版本 1.8.16 中也不考虑这一点)。问题是它属于哪里,因为\todo很明显它可以登陆 ToDo 页面,但它是否也应该与变量本身一起登陆?以及其他评论如何(初始化现在是变量)。作为附带说明,使用STRIP_CODE_COMMENTS=NO注释时也不会在初始化中显示。
于 2019-10-14T12:13:37.573 回答