多くの言語はドキュメントコメントをサポートしており、ジェネレーター(javadoc
またはdoxygen)が同じコードを解析してコードドキュメントを生成できるようにしています。
Swiftにはこのようなタイプのドキュメントコメント機能がありますか?
// MARK:
コメントは将来のXcodeバージョンにも予定されています。
多くの言語はドキュメントコメントをサポートしており、ジェネレーター(javadoc
またはdoxygen)が同じコードを解析してコードドキュメントを生成できるようにしています。
Swiftにはこのようなタイプのドキュメントコメント機能がありますか?
// MARK:
コメントは将来のXcodeバージョンにも予定されています。
回答:
ドキュメントコメントはXcodeでネイティブにサポートされており、クイックヘルプ(⌥シンボルをクリックしたときのポップオーバーとクイックヘルプインスペクターの両方)でスマートにレンダリングされたドキュメントを生成します⌥⌘2。
シンボルドキュメントのコメントは、豊富なプレイグラウンドコメントで使用されているものと同じMarkdown構文に基づいているため、プレイグラウンドで実行できる多くの操作をソースコードドキュメントで直接使用できるようになりました。
構文の詳細については、「マークアップフォーマットのリファレンス」を参照してください。豊富な遊び場のコメントとシンボルのドキュメントの構文には、いくつかの相違点があることに注意してください。これらはドキュメントで指摘されています(たとえば、ブロック引用は遊び場でのみ使用できます)。
以下は、シンボルドキュメンテーションコメントで現在機能する構文要素の例とリストです。
Xcode 7ベータ4〜「- Throws: ...
」を最上位のリストアイテムとして追加しました。これはパラメーターと共に表示され、クイックヘルプの説明を返します。
Xcode 7ベータ 1〜Swift 2の構文に対するいくつかの重要な変更-ドキュメントのコメントがMarkdownに基づくようになりました(プレイグラウンドと同じ)。
Xcode 6.3(6D570)〜インデントされたテキストはコードブロックとしてフォーマットされ、後続のインデントはネストされます。このようなコードブロックに空白行を残すことはできないようです。これを行おうとすると、文字が含まれている最終行の最後にテキストが貼り付けられます。
Xcode 6.3 beta〜インラインコードを、バッククォートを使用してドキュメントコメントに追加できるようになりました。
/// 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."
}
///
(インライン)と/** */
(ブロック)の両方のスタイルのコメントが、ドキュメンテーションコメントの作成でサポートされています。個人的には/** */
コメントの視覚的なスタイルを好みますが、Xcodeの自動インデントは、先頭の空白を削除するため、コピー/貼り付け時にこのコメントスタイルのフォーマットを台無しにする可能性があります。例えば:
/**
See sample usage:
let x = method(blah)
*/
貼り付けると、コードブロックのインデントが削除され、コードとしてレンダリングされなくなります。
/**
See sample usage:
let x = method(blah)
*/
このため、通常はを使用し///
、この回答の残りの例ではそれを使用します。
見出し:
/// # My Heading
または
/// My Heading
/// ==========
小見出し:
/// ## My Subheading
または
/// My Subheading
/// -------------
水平線:
/// ---
順不同(箇条書き)リスト:
/// - An item
/// - Another item
+
または*
順不同リストを使用することもできますが、それは一貫している必要があります。
順序付き(番号付き)リスト:
/// 1. Item 1
/// 2. Item 2
/// 3. Item 3
コードブロック:
/// for item in array {
/// print(item)
/// }
少なくとも4つのスペースのインデントが必要です。
強調(イタリック):
/// Add like *this*, or like _this_.
強い(太字):
/// You can **really** make text __strong__.
同じ要素にアスタリスク(*
)とアンダースコア(_
)を混在させることはできません。
インラインコード:
/// Call `exampleMethod(_:)` to demonstrate inline code.
リンク:
/// [Link Text](https://en.wikipedia.org/wiki/Hyperlink)
画像:
/// ![Alt Text](http://www.example.com/alt-image.jpg)
URLは、Web URL( "http://"を使用)または絶対ファイルパスURL(相対ファイルパスが機能しないようです)のいずれかです。
リンクと画像のURLは、すべてのURLを1つの管理可能な場所に保持するために、インライン要素から分離することもできます。
/// A [link][1] an an ![image][2]
///
/// ...
///
/// [1]: http://www.example.com
/// [2]: http://www.example.com/image.jpg
マークダウンの書式設定に加えて、Xcodeは他のマークアップキーワードを認識して、クイックヘルプに目立つように表示します。これらのマークアップキーワードは、ほとんどの形式をとります- <keyword>:
(例外はparameter
、コロンの前にパラメーター名も含まれます)。キーワード自体は、大文字/小文字の任意の組み合わせで記述できます。
以下のキーワードは、ヘルプビューアの目立つセクションとして、[説明]セクションの下、および[宣言された場所]セクションの上に表示されます。含めると、コメントに好きな順序で含めることができますが、それらの順序は以下のように固定されます。
マークアップの書式設定リファレンスの「シンボルセクションコマンド」セクションにあるセクションキーワードとその用途の完全に文書化されたリストを参照してください。
/// - parameters:
/// - <#parameter name#>:
/// - <#parameter name#>:
/// - throws:
/// - returns:
または、次のように各パラメーターを書き込むこともできます。
/// - parameter <#parameter name#>:
次のキーワードリストは、ヘルプビューアの[説明]セクションの本文に太字の見出しとして表示されます。これらは、「説明」セクションの他の部分と同様に、記述した順序で表示されます。
エリカサドゥンによるこの優れたブログ記事から言い換えた全リスト。マークアップの書式設定リファレンスの「シンボルの説明フィールドコマンド」セクションで、完全に文書化されたキーワードのリストとその使用目的もご覧ください。
帰属:
/// - author:
/// - authors:
/// - copyright:
/// - date:
可用性:
/// - since:
/// - version:
警告:
/// - attention:
/// - important:
/// - note:
/// - remark:
/// - warning:
開発状態:
/// - bug:
/// - todo:
/// - experiment:
実装品質:
/// - complexity:
機能的意味論:
/// - precondition:
/// - postcondition:
/// - requires:
/// - invariant:
クロスリファレンス:
/// - seealso:
HTMLドキュメント(アップル独自のドキュメントを模倣するように設計されています)は、オープンソースのコマンドラインユーティリティであるJazzyを使用して、インラインドキュメントから生成できます。
$ [sudo] gem install jazzy
$ jazzy
Running xcodebuild
Parsing ...
building site
jam out ♪♫ to your fresh new docs in `docs`
このNSHipsterの記事から引用したコンソールの例
/// - todo: keyword
myOtherMethod(param1:)
拡張機能を見る」
Xcode 6で迅速なコードを文書化するために役立ついくつかのことを次に示します。これは非常にバグが多く、コロンに敏感ですが、何もしないよりはましです。
class Foo {
/// This method does things.
/// Here are the steps you should follow to use this method
///
/// 1. Prepare your thing
/// 2. Tell all your friends about the thing.
/// 3. Call this method to do the thing.
///
/// Here are some bullet points to remember
///
/// * Do it right
/// * Do it now
/// * Don't run with scissors (unless it's tuesday)
///
/// :param: name The name of the thing you want to do
/// :returns: a message telling you we did the thing
func doThing(name : String) -> String {
return "Did the \(name) thing";
}
}
上記は、フォーマットされた数値リスト、箇条書き、パラメーター、および戻り値のドキュメントで期待されるように、クイックヘルプでレンダリングされます。
これは文書化されていません-それらを支援するためにレーダーを提出してください。
///
説明テキストと:param:
or :returns:
行の間に空白のコメント()行が必要なようです。これを省略すると、XCode(執筆時点では6.1.1)が関数の説明の本文にパラメーターのヘルプを含めます。
Xcode 8の新機能、次のような方法を選択できます
func foo(bar: Int) -> String { ... }
次にcommand
+ option
+を/
押すか、Xcodeの[エディタ]メニューから[ 構造]-[ドキュメントの追加 ]を選択すると、次のコメントテンプレートが生成されます。
/// <#Description#>
///
/// - parameter bar: <#bar description#>
///
/// - returns: <#return value description#>
はい。ベースコモン(私はObj-C同等のものでスニペットを作成しました)
Objective-C:
/**
@brief <#Short description - what it is doing#>
@discussion <#Description#>
@param <#paramName#> <#Description#>.
@return <#dataType#> <#Description#>.
*/
迅速
/**
<#Short inline description - what it is doing#>
<#Description#>
:param: <#paramName#> <#Description#>.
:returns: <#dataType#> <#Description#>.
*/
Swiftのみを使用している場合、Jazzyは一見の価値があります。
Jazzyは、美しいアップルスタイルのドキュメントを生成するのに役立ちます。以下は、すばやく使用して構成する方法の詳細が記載されたサンプルアプリです。
AppleDocや、あまり認識されていないApple独自のHeaderDocに目を向けることは良い考えかもしれません。10.9 Mavericksターミナル(headerdoc2html)で一部のHeaderDocヒントを見つけることができます
最新の「Xcodeの新機能」を読むことをお勧めします(まだNDAの下にあるかどうかは不明です)*このリンクは、HeaderDocに関する情報も含まれているXcode 5.1バージョンを指しています。
Xcode 5.0以降、DoxygenおよびHeaderDoc構造化コメントがサポートされています。
/// This is what the method does.
等を使用します