当项目不断扩大,团队中不断有新的成员加入,这时候就需要我们的项目有可查看的技术文档,方便新加入的成员查阅,快速地了解项目。但是这种文档如果从团队中专门调配出人去整理的话,既低效成本又高,还好iOS也有类似于java语言中的javadoc可以根据源码中的注释来生成技术文档的工具。
目前iOS比较常用的自动生成文档工具有doxygen, headdoc 和 appledoc三个,下面来看一下这三个工具的对比情况。
Doxygen
Doxygen原本是为C++开发的文档生成工具,当然它是开源的,通过一票扩展也能支持各种主流非主流语言。除了能生成HTML外,还能生成pdf和LATEXLATEX格式。在appledoc出现之前,很多人就喜欢用这个来生成ObjC代码的文档。相比HeaderDoc来说,有很多可以调教的地方。苹果官方也曾为这个工具写过文档。一切看上去都很棒,不足的地方就是,它生成的文档风格和官方文档的风格差了很多(虽然说不算太难看,但是放到Xcode里看格格不入),配置复杂等。。
HeaderDoc
HeaderDoc是苹果官方的文档生成工具。支持JavaDoc风格的注释,支持一些比较常见的语言,例如Java、C/C++、ObjC、Python、Ruby等等。 官方的好处就是:安好Xcode就自带了,生成的文档风格和Apple官方保持一致,支持语言较多。缺点就是可调教的的地方较少,不生成聚合页,注释风格要求较严等。
appledoc
appledoc是最年轻的一个,并且只为Objective-C服务(很专一),能生成和Apple一个风格的文档,功能齐全,使用方便,还可以直接编译成docset安装进xcode。。看样子除了语言支持太少,其他的表现都不错,关键是最贴合Xcode。 虽然没有统计数据,但我相信ObjC这个用的人应该是最多的。
因为我们的项目是基于object-c去开发的,所以经过上面的对比,我更加青睐appledoc,接下来就让我们用appledoc来生成一份文档吧。
安装appledoc
方法一
终端命令
1 | git clone git://github.com/tomaz/appledoc.git |
方法二
- 安装Homebrew
- 执行命令: brew install appledoc
验证是否安装:
1 | appledoc --version |
如果显示了版本号说明安装成功了,接下来就是用appledoc来生成文档了。
生成API文档
我们新建一个工程,在viewController中的.h中生成注释来测试。
既然我们使用的appledoc来生成API文档,那么注释方面也要符合appledoc的注释规范:
/// 这是单行注释。 (// 双斜杠这种单行注释是不会被识别的,在xcode中三斜杠的注释 按住option + function 会显示注释内容,双斜杠也是不会显示的)
/* 这也是单行注释 /
/! 同样是单行注释 /
/** 这也是单行注释,
- 第二行会接上第一行。
*/
在注释块内,appledoc还支持Markdown、HTML、HeaderDoc Tags的语法。
比如我们在viewController.h中的注释是这个样子:
1 | /** 第一行是类的简介 |
接下来我们来生成如上所示的文档,有两种方式:
方法一
终端命令生成:进入项目的所在目录,然后运行下面的命令
1 | appledoc --project-name 工程名称 --project-company 公司名称 --company-id 项目唯一标识 --output 生成结果输出路径 ./ 扫描哪个路径下的类(这里是当前目录下的所有类,包含子目录中的类) |
最终会在output的目录中生成docset-installed.txt的文件,打开文件会有如下内容
1 | Documentation set was installed to Xcode! |
然后进入Path路径可以发现这个路径是官方API文档的下载目录,我们自己生成的API文档也在这里
.docset其实是一个bundle文件,我们选中自己生成的.docset文件显示包内容可以在Documents目录下看到.html文件。
打开.html文件就可以查阅我们生成的API文档啦~
方法二
集成到xcode工程:
1.新建Aggregate Target
2.添加脚本功能
3.把下面代码中company,companyID,companyURL,outputPath的值替换成你的信息
1 | #appledoc Xcode script |
4.把修改后的脚本代码粘贴到下面的区域
5.xcode工程选中新生成的Target运行就会在outputPath路径中生成你的API文档了,在/Users/用户名/Library/Developer/Shared/Documentation/DocSets/ 中也会生成一份.docset文件。
除了通过.html文件查看API文档也可以通过Dash查看,非常方便哦~
参考: