我正在使用Doxygen为我正在开发的C#项目生成一些API文档。我在这个项目中有相当多的“内部”功能,并且不希望Doxygen在它生成的生成的html中产生这些签名。
我已尝试启用HIDE_FRIEND_COMPOUNDS,但这仍会导致我的内部类在生成的文档中公开。
有谁知道怎么做?
答案 0 :(得分:9)
Addon to Mac H的答案,您必须设置这些额外的配置参数才能使其正常工作:
# The PREDEFINED tag can be used to specify one or more macro names that
# are defined before the preprocessor is started (similar to the -D option of
# gcc).
PREDEFINED = internal=private
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
# will be included in the documentation.
EXTRACT_PRIVATE = NO
# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
# evaluate all C-preprocessor directives found in the sources and include
# files.
ENABLE_PREPROCESSING = YES
# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
# names in the source code. If set to NO (the default) only conditional
# compilation will be performed. Macro expansion can be done in a controlled
# way by setting EXPAND_ONLY_PREDEF to YES.
MACRO_EXPANSION = YES
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
# then the macro expansion is limited to the macros specified with the
# PREDEFINED and EXPAND_AS_DEFINED tags.
EXPAND_ONLY_PREDEF = YES
答案 1 :(得分:5)
这是一个旧条目,但我遇到了同样的问题。
对我有用的方法是简单地使用doxygen的'predefine'功能。 如果你预定义'internal = private'(相当于做'#define internal private'),那么Doxygen会将所有'内部'属性视为'私有' - 所以如果请求则忽略它们。
这是一个kludge - 但它有效。
答案 2 :(得分:1)
doxygen有几种方法可以通过在配置文件中设置选项来从文档中排除代码。
如果您的方法是私有的,请设置EXTRACT_PRIVATE = NO
您还可以指定排除模式,例如,如果您的私有类位于名为hidden的目录中,则可以通过设置排除该目录中的所有文件。
EXCLUDE_PATTERNS = */hidden/*
此外,您可以通过设置避免包含未记录的代码。
HIDE_UNDOC_CLASSES = YES
和
HIDE_UNDOC_MEMBERS = NO
答案 3 :(得分:0)
刚刚遇到主题...使用\ internal doxygen关键字,它专为此而设计。
答案 4 :(得分:0)
设置
HIDE_UNDOC_CLASSES = YES
适用于我,即使默认值为EXTRACT_PRIVATE
和PREDEFINED
也是如此。不确定原因。我希望它们必须设置在NO
上(因此私有成员没有可用的文档)和internal=private
(因此文档也从内部类中删除),但事实并非如此。 1}}和internal
类在生成的文档中不再提及。
答案 5 :(得分:0)
Doxygen显然认为C#类和结构的默认值是公共的,而不是内部的,并且会记录它们。但是,如果明确使用C#internal
访问修饰符,Doxygen会尊重它(在某种程度上)。所以,在这个源上运行Doxygen:
namespace Test_Library
{
/// <summary>
/// I should be documented.
/// </summary>
public class ExplicitPublicClass
{
public int Field;
}
/// <summary>
/// I should NOT be documented.
/// </summary>
class ImplicitInternalClass
{
public int Field;
}
/// <summary>
/// I should NOT be documented.
/// </summary>
internal class ExplicitInternalClass
{
public int Field;
}
/// <summary>
/// I should be documented.
/// </summary>
public struct ExplicitPublicStruct
{
public int Field;
}
/// <summary>
/// I should NOT be documented.
/// </summary>
struct ImplicitInternalStruct
{
public int Field;
}
/// <summary>
/// I should NOT be documented.
/// </summary>
internal struct ExplicitInternalStruct
{
public int Field;
}
}
在Doxygen的输出中获取此类列表:
C ExplicitPublicClass I should be documented.
C ExplicitPublicStruct I should be documented.
C ImplicitInternalClass I should NOT be documented.
C ImplicitInternalStruct I should NOT be documented.
但是,你仍然可以在“命名空间参考:”下的Doxygen的类列表中获得显式的内部类和结构。
class ExplicitInternalClass
I should NOT be documented.
struct ExplicitInternalStruct
I should NOT be documented.
class ExplicitPublicClass
I should be documented. More...
struct ExplicitPublicStruct
I should be documented. More...
class ImplicitInternalClass
I should NOT be documented. More...
struct ImplicitInternalStruct
I should NOT be documented. More...
但请注意,实际文档的“更多...”链接(以及相关类/结构名称中可用的链接)不适用于前两个。
因此,您可以使用C#的显式internal
访问修饰符来获取您正在寻找的部分行为,但不一定所有行为正在找。 (通过比较,VSDocMan完全按照您希望的方式处理上面的源代码:只记录显式公共类和结构,没有提及显式或隐式内部类或结构。)