使用appledoc自动生成api文档

AppleDoc可以根据项目中的注释自动生成类似于Apple官方文档的文档文件.

安装 appledoc

git clone git://github.com/tomaz/appledoc.git
cd ./appledoc
sudo sh install-appledoc.sh

如果出现 INSTALL SUCCEEDED 则说明我们安装成功了。

使用方法

进入工程主目录,执行

appledoc --project-name "Your Project Name" --company-id "com.yourcommpany" --project-company "Your Company" ./

这里省略了可以不添加的参数.如果有需要可以自己添加. 执行完成会在当前目录下生成一个docset-installed.txt的文件.这里是生成的docset存放地址.

集成到Xcode

新建一个target,类型为other中的Aggregate,将脚本添加到此target中,需要生成文档时,选择此target.平时build时不执行脚本.

也可以在当前的工程project下,打开build phrase,在Run Script下添加脚本.这样在bulid当前工程时就会执行脚本.

#appledoc Xcode script
# Start constants
company="abc";
companyID="com.abc";
companyURL="http://abc.com";
target="iphoneos";
#target="macosx";
outputPath="~/help";//输出地址
# End constants
/usr/local/bin/appledoc \
--project-name "${PROJECT_NAME}" \
--project-company "${company}" \
--company-id "${companyID}" \
--docset-atom-filename "${company}.atom" \
--docset-feed-url "${companyURL}/${company}/%DOCSETATOMFILENAME" \
--docset-package-url "${companyURL}/${company}/%DOCSETPACKAGEFILENAME" \
--docset-fallback-url "${companyURL}/${company}" \
--output "${outputPath}" \
--publish-docset \
--docset-platform-family "${target}" \
--logformat xcode \
--keep-intermediate-files \
--no-repeat-first-par \
--no-warn-invalid-crossref \
--exit-threshold 2 \
"${PROJECT_DIR}"

或者直接添加刚才在终端输入的命令也是可以的.

这样在build的时候,xcode会自动执行脚本,生成新的文档.

支持注释格式

/// 这是单行注释。
/** 这也是单行注释 */
/*! 同样是单行注释 */
/** 这也是单行注释,
* 第二行会接上第一行。
*/
/** 第一行是类的简介
在简介的下面,就是类的详细介绍了。
没有间隔换行会被消除,就像Html那样。
下面是常用的markdown语法
- - -
无序列表: (每行以 '*'、'-'、'+' 开头):
* this is the first line
* this is the second line
* this is the third line
有序列表:(每行以1.2.3、a.b.c开头):
a. this is the first line
b. this is the secode line
多级列表:
* this is the first line
a.this is linea
b.this is line b
* this is the second line
1.this in line 1
2.this is line 2
标题:
# This is an H1
## This is an H2
### This is an H3
#### This is an h4
##### This is an h5
###### This is an H6
链接:
普通URL直接写上,appledoc会自动翻译成链接:http://blog.ibireme.com
[这个](http://example.net/)链接会隐藏实际URL.
表格:
|header1|header2|header3|
|---------|:-------:|--------:|
|normal|center|right|
|cell|cell|cell|
引用:
这里会引用到方法`someMethod:`,这里会引用到类`YYColor`
这里会引用到一个代码块
void CMYK2RGB(float c, float m, float y, float k,
float *r, float *g, float *b) {
*r=(1 - c) * (1 - k);
*g=(1 - m) * (1 - k);
*b=(1 - y) * (1 - k);
}
@since iOS5.0
*/
@interface AppledocExample : NSObject
///这里是属性的说明
@property(nonatomic,strong) NSString*name;
/**
@brief 这里是方法的简介。该Tag不能放到类注释里。
@exception UIColorException这里是方法抛出异常的说明
@see YYColor
@see someMethod:
@warning 这里是警告,会显示成蓝色的框框
@bug 这里是bug,会显示成黄色的框框
@param red 这里是参数说明1
@param green 这里是参数说明2
@param blue 这里是参数说明3
@return 这里是返回值说明
*/
-(UIColor *)initWithRed:(int)red green:(int)green blue:(int)blue;
-(void)someMethod:(NSString*)str;
@end

经常使用的标签:

@brief : 使用它来写一段你正在文档化的method, PRoperty, class, file, struct, 或enum的短描述信息。
@discusstion: 用它来写一段详尽的描述。如果需要你可以添加换行。
@param:通过它你可以描述一个 method 或 function的参数信息。你可以使用多个这种标签。
@return: 用它来制定一个 method 或 function的返回值。
@see: 用它来指明其他相关的 method 或 function。你可以使用多个这种标签。
@sa:同上
@code : 使用这个标签,你可以在文档当中嵌入代码段。当在Help Inspector当中查看文档时,代码通过在一个特别的盒子中用一种不同的字体来展示。始终记住在写的代码结尾处使用@endcode标签。
@remark : 在写文档时,用它来强调任何关于代码的特殊之处。

注意: 不管是直接使用终端还是集成到xcode,AppleDoc 使用的时候如果项目中有pod第三方的会报错。无法生成 docset-installed.txt和文档。 此时此时你可以 cd 到你项目的代码文件夹,再去执行脚本.

结果出现

Generation step 4/4 failed: GBDocSetInstallGenerator failed generating output, aborting! Documentation set was installed, but couldn't reload documentation within Xcode. Expected end of line but found identifier.

并且生成 docset-installed.txt和文档.