tutorial code alternatives c# documentation doxygen

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.