Documentar un miembro no existente con Doxygen

Estoy tratando de documentar una clase de python usando Doxygen. La clase expone un conjunto de propiedades a través de d-bus, pero estas no tienen ningún captador / configurador público correspondiente en la clase python. En su lugar, se implementan a través de una interfaz de propiedades de d-bus (Set / Get / GetAll / Introspect).

Lo que quiero hacer es poder documentar estas propiedades usando algo como esto:

## @property package::Class::Name description

Todo el paquete :: Class funciona (el mismo método encuentra funciones, por lo que encuentra la clase correcta).

Al ejecutar doxygen me sale el siguiente error:

warning: documented function ``package::Class::Name' was not declared or defined.

Puedo vivir con una advertencia, pero desafortunadamente la propiedad no aparece en la documentación generada para la clase, por lo que no solo es una advertencia, sino que también está silenciada.

Entonces, mi pregunta es, ¿cómo, si puedo, hacer que el miembro de la propiedad no existente aparezca en los documentos generados?

Defina el atributo dentro de un bloque if 0: :

 ## @class X ## @brief this is useless class X: if 0: ## @brief whatevs is a property that doesn't exist in spacetime ## ## It is designed to make bunny cry. whatevs = property 

Esto hará que exista en la documentación (probado con doxygen 1.8.1.2-1 en debian-squeeze ). El atributo nunca se hará existir en tiempo de ejecución, y de hecho parece que el optimizador de bytecode de python elimina el enunciado if y su cuerpo por completo.

Busqué algo similar previamente y no pude encontrar una manera directa de persuadir a Doxygen para que documente un miembro no definido. Hay dos kludges básicos que puedes usar aquí:

1.) genere un objeto ficticio (o miembros ficticios) para que doxygen realice un inventario que no existe realmente en el código activo.

2.) Si los ajustes que necesita son bastante predecibles y regulares, podría escribir un INPUT_FILTER para doxygen que tome sus archivos y los convierta antes de analizarlos. Hay algunos problemas con este método, principalmente porque si planea incluir el código en la documentación y el filtro tiene que agregar / eliminar líneas del archivo, los números de línea que indica estarán desactivados y cualquier ventana de código que se muestre con la La documentación estará desactivada por ese número de líneas. También puede marcar la opción para filtrar las fonts mostradas para ajustarse a esto, pero dependiendo de quién sea el consumidor de su documentación, puede ser confuso que la copia en Doxygen no coincida perfectamente con lo que está en la fuente real.

En nuestro caso, usamos un script de Python que Doxygen ejecuta desde la línea de comandos con la ruta del archivo como arg. Leemos el archivo indicado y escribimos lo que queremos que Doxygen interprete en lugar de la salida estándar. Si necesita que también se filtren las copias de origen que se muestran en doxygen, puede establecer FILTER_SOURCE_FILES en YES .