Doxygen: HTML too large

本文关键字:large too HTML Doxygen | 更新日期: 2023-09-27 18:08:47

我有一个非常大的类,非常有文档记录。oxygen用于生成HTML文档,但是对于这个类,HTML文件很大~12 MB,这对我的品味来说太大了。

这是因为Doxygen在一个文件中列出了类的所有文档,但在这种情况下,为了有一个合理的页面,最好将类函数文档拆分到单独的页面中。

我想问的是:这有什么解决办法吗?

也许有一个特殊的选项/技巧?还是……也许我可以禁用该类的"正常"文档,并将类函数文档复制到一个更有组织的页面中?在这种情况下,我应该@copydoc这些函数,不是吗?

你的建议是什么?

Doxygen: HTML too large

这是可能的!

存在一个配置键:'SEPARATE_MEMBER_PAGES=YES'。这将为每个类成员创建一个不同的页面。

下一个问题是Doxygen生成的文件数量(一个文件系统噩梦),但这可以通过设置'CREATE_SUBDIRS=YES'来解决。:至少这将文件稀疏到目录中,因此使它们易于管理。


几天后…


。问题仍然存在……不,它比以往任何时候都更糟糕:每个单独的班级成员页面在左侧列出所有班级成员:4K成员页面,每个1mb制作……4 GB ?OMG .

因此,我决定从结果HTML中删除该表清单(如此庞大)。幸运的是,本节对所有生成的文件都是统一的。我编写了一个实用程序来实现这一点。下面是最有用的代码片段(使用 htmllagilitypack ):

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文件,并在不同的线程中编写它们(否则会花费太长时间)。

结果:从4gb传递到60mb !

如果您对结果感到好奇:请查看本文档页面的链接页面