c# - code - Doxygen: método privado/protegido de ocultación... y sugerencias
doxygen tutorial (4)
Estoy usando Doxygen para generar documentación para nuestra API, escrita en C #. Sin embargo, expone miembros privados / protegidos. ¿Hay alguna manera de ocultarlos?
Descubrí cómo ocultar archivos: EXCLUDE = Lista de nombres de archivos
Sin embargo, necesito más granularidad y así proteger a los usuarios del ruido API innecesario. Se apreciará un archivo Doxygen de muestra, así como sugerencias / trucos.
¿Qué herramientas usas para generar API a partir del código fuente?
Me siento un tanto abandonado en el siglo XVIII cuando uso Doxygen en C # a través de C ++.
Algunas posibilidades, del manual de Doxygen :
HIDE_UNDOC_MEMBERS, HIDE_UNDOC_CLASSES: Obviamente solo funciona si solo documentas a los miembros públicos.
INTERNAL_DOCS: le permite usar el / markup interno para excluir comentarios de la versión "pública" de la documentación.
ENABLED_SECTIONS: Son versiones más generales de INTERNAL_DOCS
No sé qué tan bien C # es compatible con Doxygen.
Para ocultar miembros privados, cambie el archivo de configuración de Doxyfile
siguiente manera:
EXTRACT_PRIVATE = YES
Se pueden establecer muchas otras opciones para varios tipos de elementos de código de extracción / ocultación, por ejemplo, citando Doxyfile
sí mismo:
# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
# documentation are documented, even if no documentation was available.
# Private class members and static file members will be hidden unless
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
EXTRACT_ALL = YES
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
# will be included in the documentation.
EXTRACT_PRIVATE = YES
# If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation.
EXTRACT_STATIC = YES
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
# defined locally in source files will be included in the documentation.
# If set to NO only classes defined in header files are included.
EXTRACT_LOCAL_CLASSES = YES
# This flag is only useful for Objective-C code. When set to YES local
# methods, which are defined in the implementation section but not in
# the interface are included in the documentation.
# If set to NO (the default) only methods in the interface are included.
EXTRACT_LOCAL_METHODS = YES
# If this flag is set to YES, the members of anonymous namespaces will be
# extracted and appear in the documentation as a namespace called
# ''anonymous_namespace{file}'', where file will be replaced with the base
# name of the file that contains the anonymous namespace. By default
# anonymous namespace are hidden.
EXTRACT_ANON_NSPACES = NO
# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
# undocumented members of documented classes, files or namespaces.
# If set to NO (the default) these members will be included in the
# various overviews, but no documentation section is generated.
# This option has no effect if EXTRACT_ALL is enabled.
HIDE_UNDOC_MEMBERS = NO
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
# undocumented classes that are normally visible in the class hierarchy.
# If set to NO (the default) these classes will be included in the various
# overviews. This option has no effect if EXTRACT_ALL is enabled.
HIDE_UNDOC_CLASSES = NO
# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
# friend (class|struct|union) declarations.
# If set to NO (the default) these declarations will be included in the
# documentation.
HIDE_FRIEND_COMPOUNDS = NO
Echa un vistazo a la segunda bandera de doxygen. En C # oculto algunos de nuestros miembros de encriptación de contraseñas como este:
//! @cond
private const String ENCRYPTEDFLAG = "xxxENCFLAGxxx";
private const String SEED = "hi_i_r_@_seed";
//! @endcond
La documentación de doxygen le haría creer que necesita un símbolo condicional definido para doxygen y usado en la línea @cond, pero eso no funcionó para mí. Este método lo hizo.
Esto funciona para mí, para ocultar grandes trozos de código y documentación:
/*! /cond PRIVATE */
<here goes private documented source code>
/*! /endcond */
Ejecutar con ENABLED_SECTIONS = PRIVATE
para crear su versión interna de los documentos. Puede tener varias condiciones y habilitarlas / deshabilitarlas según la audiencia.
Para ocultar solo una parte de un bloque de documentación, use /internal
(se ocultará hasta el final del bloque a menos que se encuentre /endinternal
)
Nota: puede usar la notación @ si lo prefiere en lugar de las barras diagonales inversas.