Doxygen. Error: Could not open file …/doc/html/functions_.html for writing


#1

Строю документацию по *.java файлам, doxygen выдает ошибку “Error: Could not open file …/doc/html/functions_?.html for writing” на шаге “Generating member index…”. Ошибка возникает не всегда, закономерность непонятна. Чаще всего - если есть классы количеством методов более 200, с длинными названиями методов и большим количеством параметром. Количество строк роли не играет. Для эксперимента я убрал код методов, оставил только объявления, около 300 (строк получилось тоже около 300). Если, например, половину методов убрать, то ошибка уходит.

В выражении “functions_?.htm” на месте знака вопроса идет символ ASCII 16 или 18. Т.к. этот символ непечатный, то вероятнее всего ошибка возникает из-за него. Вопрос в том, откуда он там берется? Исходники - в UTF-8


#2

Код не копипастили ни откуда?


#3

Код получаю из модуля 1С путем небольшой трансформации, пример ниже:

public class ImportXML {
/// @short ищет значение в списке XDTO, тэг id. там 2 поля: code и codifier
/// @param Тэг - пример: ДанныеXDTO.CounterParty.legalEntity.id
/// @param codifier - строка, например: calypso_id
///
Функция ПоискВСпискеXDTO(тэг, codifier) {}

}

Я немного поэкспериментировал с исходниками и сделал вывод, что доксигену не нравится кириллица. Если провести полную транслитерацию текста, то ошибки уходят. Интересный факт - ошибка возникает из-за строчной буквы “т”. Т.е. если ее исключить из транслитерации, то баг снова появляется, но здесь - “functions_?.htm”- на месте знака “?” будет двойная кавычка. Похоже, как-то криво обрабатывается юникод.
К сожалению, C++ мне не знаком и понять, что происходит в методе static void writeClassMemberIndex(OutputList &ol) я не могу, не говоря уже о том, чтобы исправить.


#4

Какая интересная идея. Как раз думал присмотреться к doxygen для генерации документации.


#5

Идея не моя, причем довольно старая.
https://infostart.ru/public/181935/
Учтите, что та разработка работает с “плоской” выгрузкой файлов конфигурации. Т.е. unload надо запускать с параметром -Format Plain


#6

Это вообще не про нас. Мы внешними обработками работаем только.
PS. Хорошо что так получается. О чем только думаешь уже кто-то сделал