Swift 有文档生成支持吗? [英] Does Swift have documentation generation support?

查看:37
本文介绍了Swift 有文档生成支持吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

许多语言都支持文档注释以允许生成器(例如 javadoc 或 )


评论风格

支持 ///(内联)和 /** */(块)样式注释来生成文档注释.虽然我个人更喜欢 /** */ 注释的视觉样式,但 Xcode 的自动缩进会在复制/粘贴时破坏这种注释样式的格式,因为它删除了前导空格.例如:

/**请参阅示例用法:让 x = 方法(废话)*/

粘贴时去掉代码块缩进,不再渲染为代码:

/**请参阅示例用法:让 x = 方法(废话)*/

出于这个原因,我通常使用 ///,并将在此答案中的其余示例中使用它.


块元素

标题:

///# 我的标题

////我的标题///==========


副标题:

///## 我的副标题

////我的副标题///-------------


水平规则:

////---


无序(项目符号)列表:

///- 一个项目///- 另一个项目

对于无序列表,您也可以使用 +*,只要保持一致即可.


有序(编号)列表:

///1. 项目 1///2. 项目 2///3. 第 3 项


代码块:

////用于数组中的项目 {///打印(项目)///}

至少需要四个空格的缩进.


内联元素

强调(斜体):

///添加 like *this* 或 like _this_.


强(粗体):

///你可以**真的**使文本 __strong__.

请注意,不能在同一元素上混合使用星号 (*) 和下划线 (_).


内联代码:

////调用 `exampleMethod(_:)` 来演示内联代码.


链接:

///[链接文本](https://en.wikipedia.org/wiki/Hyperlink)


图片:

///![Alt Text](http://www.example.com/alt-image.jpg)

URL 可以是 Web URL(使用http://")或绝对文件路径 URL(我似乎无法获得相对文件路径).

链接和图像的 URL 也可以与内联元素分开,以便将所有 URL 保存在一个可管理的地方:

///A [link][1] an an an ![image][2]//////...//////[1]: http://www.example.com///[2]: http://www.example.com/image.jpg


关键字

除了 Markdown 格式之外,Xcode 还识别其他标记关键字以在快速帮助中突出显示.这些标记关键字大多采用 - : 格式(parameter 除外,它也包括冒号前的参数名称),其中关键字本身可以是用大写/小写字符的任意组合书写.

符号部分关键字

以下关键字在帮助查看器中显示为突出部分,位于说明"部分下方和声明于"部分上方.包含后,它们的顺序将固定如下所示,即使您可以在评论中以您喜欢的任何顺序包含它们.

标记格式参考的符号部分命令部分.

///- 参数:///- <#参数名称#>:///- <#参数名称#>:///- 抛出:///- 返回:

或者,您可以这样编写每个参数:

///- 参数<#参数名称#>:

符号说明字段关键字

以下关键字列表在帮助查看器的说明"部分的正文中显示为粗体标题.它们将按照您编写它们的任何顺序出现,就像说明"部分的其余部分一样.

完整列表转述自这篇优秀的博客文章 埃丽卡·萨顿 (Erica Sadun).另请参阅 标记格式参考的符号描述字段命令部分.

归因:

///- 作者:///- 作者:///- 版权:///- 日期:

可用性:

///- 因为:///- 版本:

告诫:

///- 注意:///- 重要的:///- 笔记:///- 评论:///- 警告:

开发状态:

///- 错误:///- 去做:///- 实验:

实施质量:

///- 复杂性:

功能语义:

///- 前提条件:///- 后置条件:///- 要求:///- 不变量:

交叉引用:

///- 另见:

<小时>

导出文档

HTML 文档(旨在模仿 Apple 自己的文档)可以使用 Jazzy(一个开源命令)从内联文档生成 -线效用.

$ [sudo] gem install jazzy$爵士运行 xcodebuild解析...建筑工地在 `docs` 中添加 ♪♫ 到你的新文档

控制台示例取自这篇 NSHipster 文章

Many languages support documentation comments to allow a generator (like javadoc or doxygen) to generate code documentation by parsing that same code.

Does Swift have any type documentation comment feature like this?

解决方案

Documentation comments are supported natively in Xcode, producing smartly rendered documentation in Quick Help (both in the popover when -clicking symbols, and in the Quick Help Inspector ⌥⌘2).

Symbol documentation comments are now based on the same Markdown syntax used by rich playground comments, so a lot of what you can do in playgrounds can now be used directly in source code documentation.

For full details of the syntax, see Markup Formatting Reference. Note that there are some discrepancies between the syntax for rich playground comments & symbol documentation; these are pointed out in the document (e.g. block quotes can only be used in playgrounds).

Below is an example and a list of the syntax elements that currently work for symbol documentation comments.


Updates

Xcode 7 beta 4 ~ Added "- Throws: ..." as a top-level list item which appears alongside parameters and return descriptions in Quick Help.

Xcode 7 beta 1 ~ Some significant changes to syntax with Swift 2 - documentation comments now based on Markdown (same as playgrounds).

Xcode 6.3 (6D570) ~ Indented text is now formatted as code blocks, with subsequent indentations being nested. It doesn't appear to be possible to leave a blank line in such a code block - trying to do so results in the text being tacked onto the end of the last line with any characters in it.

Xcode 6.3 beta ~ Inline code can now be added to documentation comments using backticks.


Example for Swift 2

/// Text like this appears in "Description".
///
/// Leave a blank line to separate further text into paragraphs.
///
/// You can use bulleted lists (use `-`, `+` or `*`):
///
/// - Text can be _emphasised_
/// - Or **strong**
///
/// Or numbered lists:
///
/// 7. The numbers you use make no difference
/// 0. The list will still be ordered, starting from 1
/// 5. But be sensible and just use 1, 2, 3 etc…
///
/// ---
///
/// More Stuff
/// ==========
///
/// Code
/// ----
///
/// Use backticks for inline `code()`. Indentations of 4 spaces or more will create a code block, handy for example usage:
///
///     // Create an integer, and do nothing with it
///     let myInt = 42
///     doNothing(myInt)
///
///     // Also notice that code blocks scroll horizontally instead of wrapping.
///
/// Links & Images
/// --------------
///
/// Include [links](https://en.wikipedia.org/wiki/Hyperlink), and even images:
///
/// ![Swift Logo](/Users/Stuart/Downloads/swift.png "The logo for the Swift programming language")
///
/// - note: That "Note:" is written in bold.
/// - requires: A basic understanding of Markdown.
/// - seealso: `Error`, for a description of the errors that can be thrown.
///
/// - parameters:
///   - int: A pointless `Int` parameter.
///   - bool: This `Bool` isn't used, but its default value is `false` anyway…
/// - throws: A `BadLuck` error, if you're unlucky.
/// - returns: Nothing useful.
func doNothing(int: Int, bool: Bool = false) throws -> String {
    if unlucky { throw Error.BadLuck }
    return "Totally contrived."
}


Syntax for Swift 2 (based on Markdown)


Comment Style

Both /// (inline) and /** */ (block) style comments are supported for producing documentation comments. While I personally prefer the visual style of /** */ comments, Xcode's automatic indentation can ruin formatting for this comment style when copying/pasting as it removes leading whitespace. For example:

/**
See sample usage:

    let x = method(blah)
*/

When pasting, the code block indentation is removed and it is no longer rendered as code:

/**
See sample usage:

let x = method(blah)
*/

For this reason, I generally use ///, and will use it for the rest of the examples in this answer.


Block Elements

Heading:

/// # My Heading

or

/// My Heading
/// ==========


Subheading:

/// ## My Subheading

or

/// My Subheading
/// -------------


Horizontal rule:

/// ---


Unordered (bulleted) lists:

/// - An item
/// - Another item

You can also use + or * for unordered lists, it just has to be consistent.


Ordered (numbered) lists:

/// 1. Item 1
/// 2. Item 2
/// 3. Item 3


Code blocks:

///    for item in array {
///        print(item)
///    }

An indentation of at least four spaces is required.


Inline Elements

Emphasis (italics):

/// Add like *this*, or like _this_.


Strong (bold):

/// You can **really** make text __strong__.

Note that you cannot mix asterisks (*) and underscores (_) on the same element.


Inline code:

/// Call `exampleMethod(_:)` to demonstrate inline code.


Links:

/// [Link Text](https://en.wikipedia.org/wiki/Hyperlink)


Images:

/// ![Alt Text](http://www.example.com/alt-image.jpg)

The URL can be either a web URL (using "http://") or an absolute file path URL (I can't seem to get relative file paths to work).

The URLs for links and images can also be separated from the inline element in order to keep all URLs in one, manageable place:

/// A [link][1] an an ![image][2]
///
/// ...
///
/// [1]: http://www.example.com
/// [2]: http://www.example.com/image.jpg


Keywords

In addition to the Markdown formatting, Xcode recognises other markup keywords to display prominently in Quick Help. These markup keywords mostly take the format - <keyword>: (the exception is parameter, which also includes the parameter name before the colon), where the keyword itself can be written with any combination of uppercase/lowercase characters.

Symbol Section keywords

The following keywords are displayed as prominent sections in the help viewer, below the "Description" section, and above the "Declared In" section. When included, their order is fixed as displayed below even though you can include them in whatever order you like in your comments.

See the fully documented list of section keywords and their intended uses in the Symbol Section Commands section of the Markup Formatting Reference.

/// - parameters:
///   - <#parameter name#>:
///   - <#parameter name#>:
/// - throws:
/// - returns:

Alternatively, you can write each parameter this way:

/// - parameter <#parameter name#>:

Symbol Description Field keywords

The following list of keywords are displayed as bold headings in the body of the "Description" section of the help viewer. They will appear in whatever order you write them in, as with the rest of the "Description" section.

Full list paraphrased from this excellent blog article by Erica Sadun. Also see the fully documented list of keywords and their intended uses in the Symbol Description Field Commands section of the Markup Formatting Reference.

Attributions:

/// - author:
/// - authors:
/// - copyright:
/// - date:

Availability:

/// - since:
/// - version:

Admonitions:

/// - attention:
/// - important:
/// - note:
/// - remark:
/// - warning:

Development State:

/// - bug:
/// - todo:
/// - experiment:

Implementation Qualities:

/// - complexity:

Functional Semantics:

/// - precondition:
/// - postcondition:
/// - requires:
/// - invariant:

Cross Reference:

/// - seealso:


 Exporting Documentation

HTML documentation (designed to mimic Apple's own documentation) can be generated from inline documentation using Jazzy, an open-source command-line utility.

$ [sudo] gem install jazzy
$ jazzy
Running xcodebuild
Parsing ...
building site
jam out ♪♫ to your fresh new docs in `docs`

Console example taken from this NSHipster article

这篇关于Swift 有文档生成支持吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆