Я пытаюсь настроить автоматические Doxygen , запускаемые на нашем огромном 78 000 файлов C ++ кодовая база. Он хорошо справляется с извлечением базовой информации о типах и иерархии, но я хотел бы сделать его более умным в отношении сбора уже имеющихся комментариев документации.
Большинство комментариев, которые накопились за эти годы, действительно следуют общей схеме , хотя и не то, что ожидал Doxygen. В основном они выглядят как
// 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!
};
}
с двойной косой чертой, а не как комментарии в стиле ///
или //!
, которые ожидает Doxygen.
Слишком много файлов выполнить поиск и заменить все такие комментарии, и многие из моих программистов страдают от сильной аллергии на тройные косые черты в своем коде, поэтому я хотел бы найти способ заставить Doxygen читать обычные комментарии как комментарии JavaDoc, когда они В правильном месте. Есть ли способ заставить Doxygen читать //
как ///
?
Я не смог найти ни одного такого параметра конфигурации, поэтому полагаю, что мне понадобится чтобы как-то преобразовать ввод. В общем, я бы использовал следующее правило:
///
комментарий. //
комментарий, относитесь к нему как к ///
Но я не знаю, как научить Doxygen этому правилу. Я могу придумать два способа:
//
в ///
] s, как указано выше. Но такой вид преобразования слишком сложен, чтобы выполнять его как регулярное выражение, и я действительно не хочу писать полноценный синтаксический анализатор C ++ только для передачи входных данных другому синтаксическому анализатору C ++! Кроме того, запуск программы INPUT_FILTER для каждого файла неприемлемо замедляет работу Doxygen: для работы с нашим исходным кодом уже требуется более 30 минут, а добавление INPUT_FILTER требует более шести часов. Есть другие идеи?