Estoy intentando configurar automatizados Doxygen carreras en nuestra enorme base de código 78000 archivo de C++. Está bien extraer información básica de tipos y jerarquías, pero me gustaría hacerlo más inteligente al recoger los comentarios de documentación que ya están en marcha.Doxygen leer-doble barra C++ comentarios tan marcado
mayoría de los comentarios que se han acumulado en los últimos años siguen un patrón general, aunque no es el patrón que Doxygen espera. La mayoría de ellos se ven como
// class description
class foo
{
// returns ascii art of a fruit
const char* apples(void);
// does something to some other thing
customtype_t baz(foo &other);
enum
{
kBADGER, // an omnivorous mustelid
kMUSHROOM, // tasty on pizza
kSNAKE, // oh no!
};
}
Cuáles son doble reducido, en lugar del estilo ///
o //!
comenta que Doxygen espera.
Hay demasiados archivos para buscar y reemplazar todos esos comentarios, y muchos de mis programadores son violentamente alérgicos al ver barras diagonales triples en su código, así que me gustaría encontrar alguna manera de hacer que Doxygen lea comentarios ordinarios como comentarios JavaDoc, cuando están en el lugar correcto. ¿Hay una manera de hacer Doxygen leer //
como ///
?
no pude encontrar cualquier parámetro de configuración, por lo que figura que voy a necesitar para transformar la entrada de alguna manera. En general, la regla es que haría uso:
- si hay una línea que contiene sólo un comentario , que precede inmediatamente a un función/clase/tipo/declaración de variables , asuma que es un comentario
///
. - si hay una declaración seguido en la misma línea por un comentario
//
, lo tratan como un///<
Pero no sé cómo hacer para enseñar Doxygen esta regla. Las dos formas que se me ocurren son:
- Escribir un programa como INPUT_FILTER, que analiza la entrada C++ y se transforma en
//
s///
s que el anterior. Pero este tipo de transformación es demasiado complicado de hacer como una expresión regular, ¡y realmente no quiero tener que escribir un analizador de C++ completo solo para alimentar la entrada a otro analizador de C++! Además, al girar un programa INPUT_FILTER para cada archivo se ralentiza inaceptablemente a Doxygen: ya lleva más de 30 minutos ejecutar nuestra fuente, y agregar un INPUT_FILTER lo hace demorar más de seis horas. - modificar el código fuente Doxygen para incluir las reglas sobre comentarios anteriores. Eso parece una cantidad aterradora de trabajo en un código desconocido.
¿Alguna otra idea?
¿Qué pasa con un pequeño script que se ejecuta a través de los directorios vez, busca '' // (con espacio) en el código y lo convierte en '' ///? Además, si su programador es alérgico a '///', dígales que obtengan algo de la farmacia. – Xeo
Puede modificar el analizador de doxygen para que use '//' en lugar de '///' en ciertos lugares. Doxygen es de código abierto después de todo. De las preguntas frecuentes: 'probablemente no es demasiado difícil modificar src/scanner.l' – rve
@Xeo Si realmente revisé, modifiqué y registré en 78000 archivos solo para modificar los comentarios a un formato que a nadie le gusta, lo haría ser despedido antes de la hora del almuerzo. – Crashworks