Xcode8 利用appledoc 自动生成项目文档

最近写了一个小项目,想做完善点,就想到要有一个API的文档。知道有很多工具可以自动生成,但是具体一直没实现过,正好利用这个机会实验一把。

刚开始搜索了下,基本锁定有这两种工具:

  • HeaderDoc 是苹果官方的文档生成工具。好处是Xcode自带了,生成的文档风格和Apple官方的保持一致,支持的语言比较多。缺点是可调教的地方比较少,注释的风格要求比较严格等;貌似除了Apple外,其他使用的人比较少;最主要的是很多博文里链接到官方的地址都不存在了

  • appledoc 是比较专一的,只为Objective-C服务,能生成和Apple一个风格的文档,功能齐全,使用方便,可以直接编辑成docset安装进Xcode。缺点是支持的语言少。

最终我决定使用appledoc生成

安装 appledoc

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

安装完验证一下版本OK了

appledoc --version

生成API文档

这里说两种方法:

  • 终端命令生成
    cd到你项目所在的目录,然后再运行下面命令,然后就编译出docset并安装进Xcode。注意下面替换成你的工程名称和公司名称

appledoc --project-name 工程名称 --project-company 公司名称 ./

  • Run Script 集成在项目内
    这个方法就是把生成方式放在项目内啦,方便更新文档而已。缺点是得为每个项目添加,看个人情况使用吧。
    1、选中你的项目,点击 Add Target 按钮,选择Cross-platform --> Aggregate
    2、点击Add Build Phase 按钮,添加一个Run Script。
    3、把下面的模板嗲吗复制进入,把前几行参数改成自己的。
    4、在Xcode左上角选择这个新建的Target,然后build。
    5、文档就会编译好并且自动安装进Xcode了(重启Xcode生效)。
#appledoc Xcode script  
# Start constants  
company="公司名称";  
companyID="com.公司id";
companyURL="http://公司网址";
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}" 

语法

首先,文档中的注释只有符合规范,才能被appledoc认可
凡是以"///"、"/*"或"/!"开头的注释块,都算是appledoc注释。下面是实例:

///这是单行注释
/** 这也是单行注释/
/*! 这也是单行注释
/
/** 这也是单行注释,
* 第二行会接上第一行
*/

注释块中,每一行的开头的空格和“*”字符多数情况都会被appledoc忽略。
连续的两行(即没有间隔空行)的注释,将被合并成一个段落,并忽略换行,就想html。
在注释块中,appledoc支持如下语法:Markdowm、HTML、HeaderDoc Tags。

  • Markdown的语法在这里中文翻译介绍,比较简单,学习成本不高,简书写博文不就是这个嘛,大家可以学习一下。
  • HTML 略。喜欢的直接码HTML吧
  • HeaderDoc Tags 这个是苹果官方的,也是我们常用的了。例如:@param、@return、@warning酱紫的东西。官方文档我也没找到,找到的童鞋麻烦告诉我,多谢。不过貌似appledoc对这个的支持也不完美。
    下面是一些大家都可以搜到的语法示意啦:
///这里是属性的说明
@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

最后

编译完成的Docset默认会放在/Users/用户名/Library/Developer/Shared/Documentation/DocSets路径下
阅读在Xcode --> Window-->Documentation And API Reference 里面找啦,快捷键就是command+shift+0

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • ****一、Xcode 插件下载:**** VVDocumenter下载: https://github.com/...
    _浅墨_阅读 2,447评论 0 2
  • 前言 本篇文章主要讲解如何使用不同的工具来生成HTML注释文档 , 对于注释的使用和说明你可以在注释使用这篇文章得...
    与伟大LEE同行阅读 2,440评论 2 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,587评论 18 139
  • 一、安装过程 第一步:下载安装 稍等一会,安装OK。 第二步:安装验证: 二、使用 第一步:进入代码所在文件夹:(...
    Mitchell阅读 4,958评论 6 21
  • 话说,去年正月十五,尚未毕业的我,兜里摧着三千多一点的银行卡,带着我那一克拉的梦想,雄赳赳气昂昂就来到了大北京。 ...
    一叶绿萝阅读 284评论 2 3