Есть ли у Swift поддержка генерации документации?
Многие языки поддерживаюткомментарии к документации , позволяющие генератору (например, javadoc илиdoxygen ) генерировать документацию по коду путем синтаксического анализа этого же кода.
Делает Свифт имеет каких-либо коментариев документации, как это?
11 ответов:
Комментарии к документации поддерживаются изначально в Xcode, производя грамотно отрисованную документацию в быстрой справке (как в popover, когда ⌥-щелчок по символам, и в Инспекторе быстрой справки⌥⌘2).
Комментарии к документации символов теперь основаны на том же синтаксисе разметки, который используется комментариями rich playground, поэтому многое из того, что вы можете сделать в playgrounds, теперь можно использовать непосредственно в документации исходного кода.Для получения полной информации о синтаксис, см. ссылка на форматирование разметки. Обратите внимание, что существуют некоторые расхождения между синтаксисом для rich playground comments & symbol documentation; они указаны в документе (например, блочные кавычки могут использоваться только в playgrounds).
Ниже приведен пример и список синтаксических элементов, которые в настоящее время работают для комментариев к документации символов.
Обновления
Xcode 7 beta 4 ~ добавлен "
- Throws: ..." в качестве элемента списка верхнего уровня который появляется рядом с параметрами и описаниями возврата в быстрой справке.Xcode 7 beta 1 ~ некоторые существенные изменения в синтаксисе с комментариями Swift 2 - documentation теперь основаны на Markdown (так же, как игровые площадки).
Xcode 6.3 (6D570) ~ текст с отступами теперь форматируется как блоки кода, а последующие отступы являются вложенными. Кажется, что невозможно оставить пустую строку в таком блоке кода - попытка сделать это приводит к тому, что текст прикрепляется на конец последней строки с любыми символами в ней.
Встроенный код Xcode 6.3 beta ~ теперь можно добавлять в комментарии к документации с помощью обратных клавиш.
Пример для 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: /// ///  /// /// - 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." }
Синтаксис для Swift 2 (основанный на Markdown )
Стиль Комментариев
Комментарии в стиле
///(встроенные) и/** */(блочные) поддерживаются для создания комментариев к документации. В то время как я лично предпочитая визуальный стиль/** */комментариев, автоматическое отступление 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) /// }An требуется отступ не менее четырех пробелов.
Встроенные Элементы
Курсив (курсивом)):
/// 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)
изображения:/// URL-адрес может быть либо веб-адресом (используя " http://") или абсолютный URL-адрес пути к файлу (я не могу получить относительные пути к файлам для работы).
URL-адреса для ссылок и изображений также можно отделить от встроенного элемента, чтобы сохранить все URL-адреса в одном удобном для управления месте:
/// A [link][1] an an ![image][2] /// /// ... /// /// [1]: http://www.example.com /// [2]: http://www.example.com/image.jpg
Ключевые слова
В дополнение к форматированию Markdown, 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-документация (разработанная для имитации собственной документации Apple) может быть сгенерирована из встроенной документации с помощью Jazzy, утилиты командной строки с открытым исходным кодом.$ [sudo] gem install jazzy $ jazzy Running xcodebuild Parsing ... building site jam out ♪♫ to your fresh new docs in `docs`консольный пример взят из этой статьи NSHipster
Вот некоторые вещи, которые работают для документирования swift-кода в 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"; } }Вышесказанное представлено в быстрой справке, как и следовало ожидать, с форматированными числовыми списками, маркерами, документацией параметров и возвращаемых значений.
Ничего из этого не задокументировано-создайте радар, чтобы помочь им.
New в Xcode 8 , Вы можете выбрать такой метод
func foo(bar: Int) -> String { ... }Затем нажмите
command+option+/или выберите "структура" - "добавить документацию" из меню "редактор" Xcode, и он сгенерирует для вас следующий шаблон комментариев:/// <#Description#> /// /// - parameter bar: <#bar description#> /// /// - returns: <#return value description#>
Swift включает в себя обработку комментариев "/ / / " (хотя, вероятно, еще не все).
Напишите что-нибудь вроде:
/// Hey! func bof(a: Int) { }Затем option-нажмите на название функции и вуаля:)
Я могу подтвердить, что ShakenManChild предоставил решение peopr
Просто убедитесь, что у вас есть пустая строка под описанием!
Да. Base common (я сделал для него сниппеты с эквивалентом Obj-C)
Цель-С:
/** @brief <#Short description - what it is doing#> @discussion <#Description#> @param <#paramName#> <#Description#>. @return <#dataType#> <#Description#>. */Swift
/** <#Short inline description - what it is doing#> <#Description#> :param: <#paramName#> <#Description#>. :returns: <#dataType#> <#Description#>. */
Я нашел кое-что интересное, копаясь в двоичном файле Xcode. Файлы с окончанием
.swiftdoc. Он определенно имеет docs, потому что эти файлы содержат документы для Swift UIKit / Foundation API, к сожалению, это, кажется, проприетарный формат файла, для использования в средстве просмотра документации в Xcode.
Может быть, это хорошая идея, чтобы иметь глаз на AppleDoc или собственный HeaderDoc Apple, который не очень распознается. Я все еще могу найти некоторые подсказки HeaderDoc в терминале 10.9 Mavericks (headerdoc2html)
Я рекомендую прочитать последнюю версию "Что нового в Xcode " * (не уверен, что он все еще находится под NDA) * Ссылка указывает на версию Xcode 5.1, которая также содержит информацию о HeaderDoc.






Comments