你如何在Xcode中logging你的源代码?

我是一个非常强大的Java背景的Mac开发人员。 我用Javadoclogging了很多资料。

  • 用Cocoa和Xcode怎么样?
  • 是否有任何文档工具与苹果的开发工具一起提供?
  • Doxygen是要走的路吗? 有什么select?

Doxygen与Objective-C(以及Cocoa代码)一起工作,Apple也提供了headerdoc文档生成器工具。 然后还有GNUstep的autogsdoc 。

有一个开源项目Appledoc可以生成看起来像苹果官方文件的文件。

https://github.com/tomaz/appledoc


对于Swift来说,还有另一个叫做爵士的开源工作。

Xcode 5已经升级了快速帮助:您现在可以像使用javadoc一样在您的注释中logging代码。 当您按下选项 click点击logging的对象/方法时,您将在一个漂亮的popup窗口中看到您的评论,例如来自Apple的文档:

在这里输入图像说明

它被列入这里的function列表。 原帖在这里 。

如果您使用的是Xcode≥3.0,那么您可能需要像其他人所build议的那样查看Doxygen,然后使用Doxygen在Apple的开发者网站上阅读本文,以便为您的项目创buildXcode文档集(可在Xcode的帮助系统中查看)。

我觉得没有一个是足够好的,他们生成的文档不符合苹果的标准。 所以我向Apple报告了一个错误,要求在Xcode中使用本地文档生成工具,如果您还想要这样一个工具,请投票给它 。

我使用Doxygen和Doxyclean生成清洁的,更类似苹果的文档,这是Doxygen本地生产的。

(应该说Doxyclean不会重新格式化所有的Doxygen输出 – 你肯定会得到你从Doxygen直接获得的文档的子集)。

我知道这是一个老问题,但我发现这个最近的Xcode插件非常有帮助:

https://github.com/onevcat/VVDocumenter-Xcode

VVDocumenter

只需在方法前键入/// ,它就会自动生成文档,例如:

 - (id)fooBar:(NSString *)woo; 

在方法之前input///之后,它将产生:

/** * <#Description#> * * @param woo <#woo description#> * * @return <#return value description#> */

我在Java中有类似的背景,并且在学习Objective-C和Cocoa时也遇到过同样的问题。 目前,还没有完全为Objective-C 量身打造的工具,但Doxygen目前是最好的select。 (我同意HeaderDoc过于复杂,尤其是对于小型项目,我发现的其他工具都已经死亡,包括AutoDoc和ObjcDoc。)Doxygen的开发人员在过去的几个版本中一直改进Obj-C支持,包括我提交的协议处理不正确的一些错误。

在Xcode中,我创build了一个具有单个运行脚本阶段的文档目标,该阶段使用保存在项目目录中的doxyfile调用Doxygen。 它有助于在/usr/local/bin为Doxygen可执行文件创build一个符号链接,因此在共享的doxyfile中没有机器特定的path。

Doxygen 几乎支持您期望在Javadoc中看到的所有评论标签,另外还有更多。 我在开发的开放源代码框架上广泛使用了它 – 使用Subversion post-commit hook自动生成结果文档,并在线提供:

http://dysart.cs.byu.edu/CHDataStructures/

注意文档inheritance和协作的图表。 这些可以select使用GraphViz提供的工具( v1.13或v2.20)生成 。 这些图是可点击的HTML图像映射,这有助于弥补Javadoc(如inheritance层次结构)或Apple的Cocoa文档(如采用的协议)期望的顶层信息的缺失。


另外,由于CHDataStructures是一个有很多公共API的框架,所以我写了大量的注释 – 大约70%的头文件。 由于文档在Doxygen生成的表单中更有用,我select从Release版本的头文件中删除大部分注释,这大大减less了头文件的磁盘大小。 我已经在BYU CocoaHeads wiki上发布了完整的解释和代码:

http://cocoaheads.byu.edu/wiki/stripping-comments-source-code

忘记headerdoc。 Headerdoc是一堆/ ** poo * /。 坚持与doxygen。 它工作得很好,并产生良好的文档。 它可以理解(或至less不会炸毁)更独特的Objc结构(协议,类别等)。 Doxygen风格的文档标记实际上是一个超集(正确的configuration)的headerdoc无论如何。

我build议使用HeaderDoc ,如WWDC 2103video401 – Xcode核心概念中的“集成文档”部分所述。 它在Xcode 5中完全支持

在这里输入图像说明

PS:关于如何在raywenderlich.com上使用HeaderDoc有很好的教程

Swift 2.0 + Xcode 7.0 beta 4

记号已经改变:param:不再工作了…)

 /// Creates the string representation of the poo with requested size. /// /// - warning: Be carefull! Poos can hurt. /// - parameter size: requested size of the poo /// - returns: string representation of the poo func makePoo(size: String) -> String { return "Ouch. This is \(size) poo!" } 

它看起来像这样:

弹出与文档

您可以使用////** */

关于Doxygen的另外一件事是,它在C ++方面做得非常好,所以如果你的Objective-C代码库包含一个通用的C ++引擎,那么它们都将在同一个文档库中。

这是一个关于xcode文档的完整和简单的指南:

用Xcode 5中的注释logging代码

它还提供了如何在文档代码中启用警告检测。

我不知道任何Xcode支持的文档工具,我不记得在任何苹果示例代码中看到任何文档标记。

我个人使用Doxygen,这适合我的需要就好了。