Doxygen是否可以从生成的XML中排除未记录的函数?

时间:2016-05-02 09:59:13

标签: doxygen

我想仅为具有Doxygen评论的代码生成文档。我已经通过Doxygen版本1.8.9.1创建了Doxyfile并将其配置为仅输出XML并隐藏所有未记录的代码:

GENERATE_HTML          = NO
GENERATE_LATEX         = NO
GENERATE_XML           = YES
HIDE_UNDOC_MEMBERS     = YES
HIDE_UNDOC_CLASSES     = YES

之后我创建了一个简单的C头test.h,其中包含一个记录的文档和一个未记录的函数声明:

void foo(int a);

/**
 * "bar" function description
 * @param b sample param
 */
void bar(int b);

执行doxygen我希望只有bar的文档才能包含在生成的XML中。不幸的是,生成了两个函数的文档。是否可以仅为具有Doxygen注释的代码生成文档?或者,无论设置如何,Doxygen都会包含XML输出中的所有内容吗?

2 个答案:

答案 0 :(得分:2)

在进一步阅读之前,请确保EXTRACT_ALL设置为NO

我不是以下解决方案的粉丝,但确实有效。使用doxygen的预处理器

#ifdef PROJECT_NO_DOC
void foo(int a); 
#endif /* PROJECT_NO_DOC */

/**
 *  * "bar" function description
 *   * @param b sample param
 *    */
void bar(int b); 

注意,在他们的文档中你必须设置一个PREDEFINED宏,但至少在我的doxygen版本中,这不是必需的。他们的文档指定这样做Microsoft's documentation.

#ifndef DOXYGEN_SHOULD_SKIP_THIS

 /* code that must be skipped by Doxygen */

#endif /* DOXYGEN_SHOULD_SKIP_THIS */

应隐藏和放置的块周围:

PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS

在配置文件中,只要

,doxygen就会跳过所有块
ENABLE_PREPROCESSING = YES

还有其他方法,但它们带有其他限制,即确保您的公开文档中不会出现静态方法,您可以将EXTRACT_STATIC设置为NO

答案 1 :(得分:1)

您可以使用\cond隐藏Doxygen的部分源代码。这样可以避免像Harry's answer中那样使用预处理器。

例如,Doxygen将看不到foo,因此没有记录在案:

/** \cond */
void foo(int a);
/** \endcond */

/**
 * "bar" function description
 * @param b sample param
 */
void bar(int b);

此外,可以在\cond中添加节标签,并可以通过在ENABLED_SECTIONS配置选项中列出它们来控制要包括的节。

例如:

/// \cond CLASS_A
/// This function foos `a`.
void foo(int a);
/// \endcond

/// \cond CLASS_B
/// This function bars `b`.
void bar(int b);
/// \endcond

通过设置ENABLED_SECTIONS = CLASS_A CLASS_B,这两个功能将显示在文档中。省略其中一个标签将隐藏相应的功能。