OC生成API文档appledoc

参考
使用Objective-C的文档生成工具:appledoc
https://www.jianshu.com/p/0911302b3117

appledoc工具安装

打开终端输入以下命令,默认安装在用户名文件下

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

可修改html、docset模板,可按模板生成,加参数-t default

sudo sh install-appledoc.sh -t default
  • 问题1:无法从上git clone下来,可以直接到网站下载到本地http://github.com/tomaz/appledoc
  • 问题2:没有sudo权限,无法直接安装,打开install-appledoc.sh,修改下BINARY_DIR,比如改到下载的项目目录下,自己建了install文件夹
    #BINARY_DIR=/usr/local/bin/
    BINARY_DIR=~/Downloads/appledoc-master/install/
    

执行就需要全路径了

/Users/用户名/Downloads/appledoc-master/install/appledoc --help

二、appledoc工具使用

方式1:生成docset-installed.txt然后查找文档

  • 先cd到你的项目目录下(若使用cocopods,需要定位到二级项目名下)
    • ./doc即输出文件路径
    • ./即生成文档遍历的文件夹路径
  • 在终端输入以下语句
    appledoc -o ./doc --project-name 填工程名 --project-company 填公司名 ./
    
  • 此步骤执行完成后会在项目文件夹下生成一个docset-installed.txt,打开docset-installed.txt可看到生成文档路径,cmd+shift+G 定位到该文件路径上层文件夹DocSets下,找到com.liuna.test.test.docset,右键显示包内容找到index.html即可。
    index.html

    包内容

方式2:生成docset-installed.txt然后查找文档

  • cd到项目文件夹下(若使用cocopods,需要定位到二级项目名下)
  • 终端输入
    appledoc --no-create-docset --output ./doc  --project-name 输入项目名 --project-company 输入公司名 ./
    
  • 执行后在项目名文件夹下生成一个doc的文件夹,找到index.html即生成的项目文档


    index.html

三、appledoc生成文档注释规定的格式

Objective-C规范注释心得——同时兼容appledoc(docset、html)与doxygen(html、pdf)的文档生成

/// 单行注释

/** 单行注释 */

/** 注释
 * 多行注释
 */

/** 注释
 多行注释
 */

/*! 单行注释 */

/*! 注释
 over multiple lines.
 */

修改模板

  • 修改html模板,文件object-template.html
  • 第137行,Section Method区域,
  • 第一对<br>中间是我新增的,效果是每个方法前面显示简介,不然只看到一堆方法名而已
  • 其他模板可类似操作
Section Method
<div class="section-method">
    <br>
    <h5>
    {{#comment}}
    {{#hasShortDescription}}
    <p>{{#shortDescription}}{{>GBCommentComponent}}{{/shortDescription}}<p>
    {{/hasShortDescription}}
    {{/comment}}
    </5>
    
    <a name="{{htmlReferenceName}}" title="{{methodSelector}}"></a>
    
    <h3 class="method-title">{{>TaskMethod}}</h3>

appledoc --help内容如下

Usage: appledoc [OPTIONS] <paths to source dirs or files>

PATHS
  -o, --output <path>                     Output path
  -t, --templates <path>                  Template files path
      --docset-install-path <path>        DocSet installation path
  -s, --include <path>                    Include static doc(s) at path
  -i, --ignore <path>                     Ignore given path
  -x, --exclude-output <path>             Exclude given path from output
      --index-desc <path>                 File including main index description

PROJECT INFO
  -p, --project-name <string>             Project name
  -v, --project-version <string>          Project version
  -c, --project-company <string>          Project company
      --company-id <string>               Company UTI (i.e. reverse DNS name)

OUTPUT GENERATION
  -h, --create-html                       [b] Create HTML
  -m, --create-markdown                   [b] Create markdown
  -d, --create-docset                     [b] Create documentation set
  -n, --install-docset                    [b] Install documentation set to Xcode
  -u, --publish-docset                    [b] Prepare DocSet for publishing
      --html-anchors <string>             [*] The html anchor format to use in DocSet HTML.
      --clean-output                      [b] Remove contents of output path before starting !!CAUTION!!

OPTIONS
      --keep-intermediate-files           [b] Keep intermediate files in output path
      --keep-undocumented-objects         [b] Keep undocumented objects
      --keep-undocumented-members         [b] Keep undocumented members
      --search-undocumented-doc           [b] Search undocumented members documentation
      --repeat-first-par                  [b] Repeat first paragraph in member documentation
      --preprocess-headerdoc              [b] Preprocess header doc comments - 10.7 only!
      --print-information-block-titles    [b] Print title of information blocks. "Note:", "Warning:", etc.
      --use-single-star                   [b] Use single star for bold marker
      --merge-categories                  [b] Merge categories to classes
      --merge-category-comment            [b] Merge category comment to class
      --keep-merged-sections              [b] Keep merged categories sections
      --prefix-merged-sections            [b] Prefix merged sections with category name
      --explicit-crossref                 [b] Shortcut for explicit default cross ref template
      --use-code-order                    [b] Order sections by the order specified in the input files
      --crossref-format <string>          Cross reference template regex
      --exit-threshold <number>           Exit code threshold below which 0 is returned
      --docs-section-title <string>       Title of the documentation section (defaults to "Programming Guides"

WARNINGS
      --warn-missing-output-path          [b] Warn if output path is not given
      --warn-missing-company-id           [b] Warn if company ID is not given
      --warn-undocumented-object          [b] Warn on undocumented object
      --warn-undocumented-member          [b] Warn on undocumented member
      --warn-empty-description            [b] Warn on empty description block
      --warn-unknown-directive            [b] Warn on unknown directive or format
      --warn-invalid-crossref             [b] Warn on invalid cross reference
      --warn-missing-arg                  [b] Warn on missing method argument documentation
      --warn-unsupported-typedef-enum     [b] Warn on unsupported typedef enum

DOCUMENTATION SET INFO
      --docset-bundle-id <string>         [*] DocSet bundle identifier
      --docset-bundle-name <string>       [*] DocSet bundle name
      --docset-desc <string>              [*] DocSet description
      --docset-copyright <string>         [*] DocSet copyright message
      --docset-feed-name <string>         [*] DocSet feed name
      --docset-feed-url <string>          [*] DocSet feed URL
      --docset-feed-formats <values>      DocSet feed formats. Separated by a comma [atom,xml]
      --docset-package-url <string>       [*] DocSet package (.xar) URL
      --docset-fallback-url <string>      [*] DocSet fallback URL
      --docset-publisher-id <string>      [*] DocSet publisher identifier
      --docset-publisher-name <string>    [*] DocSet publisher name
      --docset-min-xcode-version <string> [*] DocSet min. Xcode version
      --docset-platform-family <string>   [*] DocSet platform familiy
      --docset-cert-issuer <string>       [*] DocSet certificate issuer
      --docset-cert-signer <string>       [*] DocSet certificate signer
      --docset-bundle-filename <string>   [*] DocSet bundle filename
      --docset-atom-filename <string>     [*] DocSet atom feed filename
      --docset-xml-filename <string>      [*] DocSet xml feed filename
      --docset-package-filename <string>  [*] DocSet package (.xar,.tgz) filename. Leave off the extension. This will be added depending on the generated package.

MISCELLANEOUS
      --logformat <number>                Log format [0-3]
      --verbose <value>                   Log verbosity level [0-6,xcode]
      --version                           Display version and exit
      --help                              Display this help and exit

==================================================================
[b] boolean parameter, uses no value, use --no- prefix to negate.

[*] indicates parameters accepting placeholder strings:
- %PROJECT replaced with --project-name
- %PROJECTID replaced with normalized --project-name
- %VERSION replaced with --project-version
- %VERSIONID replaced with normalized --project-version
- %COMPANY replaced with --project-company
- %COMPANYID replaced with --company-id
- %YEAR replaced with current year (format yyyy)
- %UPDATEDATE replaced with current date (format yyyy-MM-dd)
- %DOCSETBUNDLEFILENAME replaced with --docset-bundle-filename
- %DOCSETATOMFILENAME replaced with --docset-atom-filename
- %DOCSETPACKAGEFILENAME replaced with --docset-package-filename

==================================================================
Find more help and tips online:
- http://appledoc.gentlebytes.com/
- http://tomaz.github.com/appledoc/

==================================================================
appledoc uses the following open source components, fully or partially:

- DDCli by Dave Dribin
- CocoaLumberjack by Robbie Hanson
- ParseKit by Todd Ditchendorf
- RegexKitLite by John Engelhart
- GRMustache by Gwendal Roué
- Discount by David Parsons
- Timing functions from Apple examples

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