首页 文章

Objective-C文档生成器:HeaderDoc与Doxygen对比AppleDoc

提问于
浏览
74

我需要为我的工作场所实施文档生成解决方案,并将其缩小到 Headers 中提到的三个 . 我已经能够找到这些解决方案之间形式化比较的非常少的信息,我希望那些在上述一个或多个方面有经验的人可以权衡:

以下是我从初次传球中收集到的内容:

HeaderDoc优点:与苹果现有的文档一致,与制作苹果文档集的兼容性
HeaderDoc缺点:难以修改行为,项目没有积极处理,许多人已经离开它(意味着必须有一些不足之处,尽管我无法量化它) .

Doxygen Pros:活跃支持社区b / c广泛使用基础,非常可定制,大多数输出类型(如乳胶等)
Doxygen缺点:需要努力使其外观/行为与apple docs一致,与apple docsets的兼容性并不那么简单

AppleDoc专业人士:看起来与苹果现有的文档一致,与制作苹果文档集的兼容性,
AppleDoc缺点:正在开发的有关typedef,枚举和函数文档的问题

这听起来准确吗?我们理想的解决方案将:

  • 使用apple objective-c类引用保持一致的外观

  • 能够选项 - 单击从Xcode中提取文档参考,然后链接到doc(就像苹果的类)

  • 智能处理类别,扩展等(甚至是苹果类的自定义类别)

  • 能够创建我们自己的参考页面(如此页面:正在加载...可以包含图像,并且可以无缝地链接生成的类引用,例如apple的UIViewController类引用如何链接到链接页面 .

  • 易于运行的命令行命令可以集成到构建脚本中

  • 优雅处理非常大的代码库

根据以上所有信息,上述任何一种解决方案明显优于其他解决方案吗?任何建议或信息添加将非常感激 .

3 回答

  • 89

    作为doxygen的创建者和首席开发者,让我也提供我的观点
    (显然也有偏见;-)

    如果您正在寻找100%忠实复制Apple自己的文档样式,那么AppleDoc在这方面是更好的选择 . 使用doxygen,您将很难获得完全相同的外观,所以我不建议尝试 .

    关于Xcode docsets; Apple提供instructions如何使用doxygen设置(在Xcode 3发布时编写) . 对于Xcode 4,还有一个nice guide如何集成doxygen .

    从版本1.8.0开始,doxygen支持Markdown markup,以及大量额外的markup命令 .

    使用doxygen,您可以在主页面(@mainpage)以及子页面(使用@subpage或@page)中包含文档 . 在页面内,您可以创建部分和子部分 . 事实上,doxygen的用户手册完全是用doxygen编写的 . 除此之外,您可以将类或函数组合在一起(使用@defgroup和@ingroup)并在类中创建自定义部分(使用@name) .

    Doxygen使用配置文件作为输入 . 您可以使用 doxygen -g 生成具有默认值的模板,或使用graphical editor创建和编辑一个模板 . 您还可以使用 doxygen - 通过脚本通过doxygen管道选项(例如,参见FAQ的问题17)

    Doxygen不仅限于Objective-C,它支持多种语言,包括C,C和Java . Doxygen也不限于Mac平台,例如它也可以在Windows和Linux上运行 . Doxygen的输出还支持HTML以外的功能;您可以生成PDF输出(通过LaTeX)或RTF和手册页 .

    Doxygen也超越了纯文档; doxygen可以从源代码创建各种图形和图表(参见dot相关选项) . Doxygen还可以创建代码的可浏览和语法突出显示版本,并与文档交叉引用(请参阅source browser相关选项) .

    对于中小型项目,Doxygen非常快(虽然图表生成速度很慢,但现在并行运行多个CPU核心,一次运行的图形在下一次运行中重复使用) . 对于非常大的项目(例如数百万行代码),doxygen允许将项目拆分成多个部分,然后可以将这些部分链接在一起,如我所解释的那样here .

    可以在here找到一个很好的实际使用doxygen for Objective-C的例子 .

    doxygen的发展很大程度上取决于用户的反馈 . 对于问题和讨论,我们有一个活跃的mailing list,对于错误和功能请求,我们有一个bug tracker .

    doxygen的大多数用户将它用于C和C代码,因此这些语言自然拥有最成熟的支持,并且输出更适合这些语言的功能和需求 . 也就是说,也希望和其他语言的问题认真 .

    请注意,我自己做了几乎所有的doxygen开发和大多数测试 .

  • 82

    我是appledoc的作者,所以这个答案可能有偏见:)虽然我尝试了所有提到的生成器(以及更多),但由于没有产生我想要的结果(与你类似的目标)而感到沮丧 .

    根据你的观点(我只提到appledoc和doxygen,我不记得那个头文件):

    • 一致的外观:appledoc开箱即用,其他需要调整css,但可能是可行的 .

    • 生成文档集(用于Xcode引用):appledoc完全支持可搜索和可选择点击的文档,doxygen生成xml和makefile,您需要自己调用 . 此外,appledoc支持published docsets开箱即用 .

    • 类别:appledoc允许您merge categories到已知类或将它们分开,基础和其他苹果类类别在index file中单独列出 . doxygen:当我尝试它时,这不是最好的 .

    • 自定义参考页面:appledoc supports开箱即用,使用markdown或自定义html,doxygen:您可以在主页面中包含自定义文档,不知道是否可以包含更多页面 .

    • 简单的命令行:取决于你如何看待它:appledoc可以通过命令行开关获取所有参数(但也支持可选的全局和项目设置plist文件),因此它应该很容易与构建脚本集成 . doxygen需要使用配置文件来设置所有参数 .

    • 大型代码库:所有工具都应该支持这一点,尽管没有时间比较 . 还不确定是否有任何工具支持缓存值(运行以前收集的数据以节省一些时间) - 我正在考虑为下一个主要版本添加此项 .

    它不支持枚举,结构,函数等(在这方面做了一些工作,check this fork),它有自己的set of issues可能会阻止你使用它,这取决于你的要求 .

    我目前正致力于cover most glaring issues的主要更新,包括对枚举,结构等的支持 . 我仍然很早,进度取决于我的时间,因此可能需要一段时间才能使用解决方案 .

  • 12

    Xcode 5现在将解析您的注释以搜索文档并显示它:

    Comment example

    你不希望导出你的文档) . 更多信息可以在here找到

相关问题