Doxygen are not collecting all \todo in global todo list

826 Views Asked by At

I have a problem with doxygen. Not all my \todo are collected in the global todo list, but most of them. I have made a simple C-example with a single source and header file, as well as a configuration file, where i have placed todos everywhere i want doxygen to collect them into the global todo list.

My global todo list is missing the shown todos in the below code snippet, meaning the one inside the body of my public function (test_todo12 in myFunc), as well as the ones in the cfg file (test_todo16 and test_todo17), both implemented as shown below.

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
 }

I am using doxygen version 1.8.14

The differences in my doxygen configuration file compared to the default settings are the following (after trying alot of different combinations):

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

Link to the full compilable code and doxygen configuration (minimal example for showing this problem): Link to code

When i navigate to the public function "myFunc" i see the todo, it is just missing in the global todo list.

The cfg file does not seem to be included in the doxygen documentation at all, event though it is included in the C file, and theby should be seen as a part of this file? Or is it really necessary to do something extra/special for including these cfg files? If so, does someone know what I am missing?

I hope someone can help me solve my problem, maybe the todo in the public function body is even a bug?

Regards Jesper

1

There are 1 best solutions below

8
On

Looks like there are a number of issues here.

  • the extension cfg is not known to doxygen and only adding it to FILE_PATTERNS is not sufficient, also the language in which it is written has to be made known to doxygen, so EXTENSION_MAPPING = cfg=C.
  • the variable in the test.cfg is missing a semi-colon (;) at the end. last line should read };
  • the comment inside the initialization is not considered by doxygen as documenting something (also in the current version 1.8.16 this is not considered). Problem would be where does it belong, for a \todo is would be clear that it can land on the ToDo page, but should it also land with the variable itself? and how about other comments (initializations are now variables). As a side note when using STRIP_CODE_COMMENTS=NO the comment is not shown in the initialization either.