Doxygen: HTML слишком большой - PullRequest
       7

Doxygen: HTML слишком большой

3 голосов
/ 17 сентября 2011

У меня очень большой класс, который очень задокументирован. Doxygen используется для создания документации HTML, но для этого класса файл HTML имеет большой размер ~ 12 МБ, что на мой вкус слишком много.

Это происходит потому, что Doxygen перечисляет всю документацию класса в одном файле, но в этом случае желательно разделить документацию функций класса на отдельные страницы, чтобы получить разумную страницу.

Что я спрашиваю: есть ли какое-то решение для этого?

Может быть, есть специальная опция / трюк для этого? Или же... Может быть, я могу отключить «нормальную» документацию для этого класса и скопировать документацию по функциям класса на более организованную страницу? В этом случае я буду @copydoc эти функции, не так ли?

Что вы посоветуете?

1 Ответ

1 голос
/ 17 сентября 2011

Это возможно!

Существует ключ конфигурации: 'SEPARATE_MEMBER_PAGES = YES' .Это создаст отдельную страницу для каждого члена класса.

Следующая проблема - это количество файлов, которые генерирует Doxygen (кошмар файловой системы), но это можно решить, установив 'CREATE_SUBDIRS = YES' : по крайней мере, это редкие файлы в каталогах, так что сделайте их управляемыми.


Через несколько дней ...


Нет.Проблема все еще существует ... нет, это хуже, чем когда-либо: каждая отдельная страница участника класса перечисляет всех членов класса слева: страницы по 4 КБ, по 1 МБ каждая составляют ... 4 ГБ?OMG.

Итак, я решил удалить этот список таблиц (настолько обширный) из полученного HTML.К счастью, этот раздел одинаков для всех сгенерированных файлов.Я сделал утилиту для достижения этой цели.Вот наиболее полезный фрагмент кода (с использованием HtmlAgilityPack ):

HtmlAgilityPack.HtmlNode divNode = htmlDoc.DocumentNode.SelectSingleNode("//body/div[@class='contents']/table/tr/td/div[@class='navtab']");

if (divNode != null) {
    divNode.ParentNode.RemoveChild(divNode, false);

    Console.WriteLine("Queued {0}", htmlPath);

    lock (sReducedHtmlPathsLock) {
        sReducedHtmlPaths.Add(htmlPath, htmlDoc);
        sReducedHtmlPathsSemaphore.Release();
    }
}

Конечно, я создаю многопоточную программу, которая загружает несколько файлов HTML в отдельных потоках и записывает их в отдельных потоках.тоже (в противном случае это займет слишком много времени).

Результат: передан с 4 ГБ до 60 МБ!

Вам интересно узнать результат: см. связанные страницы на этой странице документации.

...