Есть ли у Swift поддержка генерации документации?



Многие языки поддерживаюткомментарии к документации , позволяющие генератору (например, javadoc илиdoxygen ) генерировать документацию по коду путем синтаксического анализа этого же кода.



Делает Свифт имеет каких-либо коментариев документации, как это?

1233   11  

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:
///
/// ![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."
}

Свифт Документации Краткая Справка


Синтаксис для 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)


изображения:

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

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

Просто убедитесь, что у вас есть пустая строка под описанием!

Недопустимая ситуация

Правильный способ

Другой способ

Еще один стиль комментирования

Если вы используете только Swift, то Jazzy стоит посмотреть.

Https://github.com/realm/jazzy

Да. 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.

В Редакторе Xcode - > Структура - > Добавить Документацию.

Введите описание изображения здесь

Может быть, это хорошая идея, чтобы иметь глаз на AppleDoc или собственный HeaderDoc Apple, который не очень распознается. Я все еще могу найти некоторые подсказки HeaderDoc в терминале 10.9 Mavericks (headerdoc2html)

Я рекомендую прочитать последнюю версию "Что нового в Xcode " * (не уверен, что он все еще находится под NDA) * Ссылка указывает на версию Xcode 5.1, которая также содержит информацию о HeaderDoc.

Начиная с Xcode 5.0, поддерживаются структурированные комментарии Doxygen и HeaderDoc.

Источник

Comments

    Ничего не найдено.