Avatar ·

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

Всем привет! Я начинающий iOS-разработчик и пишу на Swift около полугода. Недавно столкнулся с проблемой: мой проект разросся, и я стал путаться в собственных функциях и методах. Раньше я просто писал комментарии вида `// это функция для загрузки данных`, но это неудобно — приходится постоянно заглядывать в код. Я слышал, что в некоторых языках (например, Java с JavaDoc или Python с Sphinx) есть встроенные инструменты для генерации красивой документации прямо из комментариев. Мне интересно, есть ли что-то подобное в Swift? Можно ли как-то автоматически создать HTML-документацию для моего проекта, чтобы я мог быстро посмотреть описание всех классов, методов и свойств? Я попробовал писать комментарии в стиле `/// Это свойство хранит имя пользователя`, но не знаю, работает ли это как-то с генератором. Например, у меня есть такой код: ```swift class UserManager { var userName: String = "" func fetchUserData(userId: Int) -> String { // тут какой-то код return "User data" } } ``` Как мне задокументировать это, чтобы потом получить готовую документацию? Нужно ли устанавливать сторонние инструменты, или Xcode сам что-то умеет? Заранее спасибо за помощь! <<>>

Да, Swift поддерживает генерацию документации!

В Swift есть полноценная поддержка документирования кода, причём как встроенными средствами Xcode, так и отдельным инструментом DocC (Documentation Compiler), который появился начиная с Xcode 13. Вы можете создавать профессиональную HTML-документацию, аналогичную той, что вы видите на сайте Apple Developer.

1. Базовое документирование с помощью комментариев

Самый простой способ — использовать /// (три слеша) или многострочные комментарии /** ... */. Xcode автоматически распознаёт их и показывает в Quick Help (Alt+клик по символу).

Пример для вашего кода:

/// Класс для управления пользователями.
/// 
/// Используйте этот класс для получения и хранения данных пользователя.
class UserManager {
    /// Имя текущего пользователя.
    /// 
    /// По умолчанию пустая строка. Устанавливается после успешного входа.
    var userName: String = ""
    
    /// Загружает данные пользователя по его идентификатору.
    ///
    /// - Parameter userId: Уникальный идентификатор пользователя.
    /// - Returns: Строку с данными пользователя.
    /// - Warning: Этот метод выполняет синхронный запрос, не используйте в главном потоке.
    func fetchUserData(userId: Int) -> String {
        // тут какой-то код
        return "User data"
    }
}

Обратите внимание на теги - Parameter, - Returns, - Warning — это ключевые слова, которые DocC понимает. Полный список включает: Parameter, Returns, Throws, Precondition, Postcondition, Requires, Invariant, Complexity, Important, Warning, Note, Remark, SeeAlso, Author, Authors, Copyright, Date.

2. Генерация документации через DocC

DocC — это официальный инструмент Apple. Он позволяет создать статический сайт документации из ваших комментариев и дополнительных Markdown-файлов.

Как запустить:

  • В Xcode: выберите меню Product → Build Documentation. Откроется окно документации.
  • Для экспорта в HTML: используйте команду в терминале:
    xcrun docc convert Sources/YourModule.docc \
      --output-path ./docs \
      --hosting-base-path /your-site-path
  • Также можно добавить схему сборки в Xcode: Product → Scheme → Edit Scheme → добавить действие "Build Documentation".

3. Расширенная документация с помощью .docc каталога

Для статей, руководств и обзоров создайте в проекте папку YourModule.docc и положите туда Markdown-файлы. Пример структуры:

MyApp/
├── Sources/
│   ├── MyApp/
│   │   ├── MyApp.docc/
│   │   │   ├── MyApp.md          # Главная страница
│   │   │   ├── GettingStarted.md # Статья
│   │   │   └── Tutorial.md       # Учебник
│   │   └── UserManager.swift
│   └── main.swift
└── Package.swift

Внутри Markdown можно ссылаться на символы кода обратными кавычками: ``UserManager``. DocC автоматически создаст гиперссылки.

4. Сторонние инструменты (если нужно что-то другое)

  • Jazzy — популярный генератор документации, который создаёт HTML в стиле Apple. Устанавливается через Homebrew: brew install jazzy. Запуск: jazzy --min-acl internal.
  • SourceDocs — лёгкий инструмент, который генерирует Markdown-файлы из комментариев.

Совет

Обязательно указывайте уровень доступа (public, open) для тех символов, которые должны попасть в документацию. DocC по умолчанию документирует только public и open. Чтобы включить internal, добавьте флаг --emit-digest или настройте схему.

Теперь вы можете писать чистый код с комментариями, а Xcode и DocC превратят их в красивую документацию!

<<>>

Альтернативный подход: использование Jazzy для быстрой генерации

Если вы не хотите разбираться с DocC (например, у вас старая версия Xcode или вам нужен простой HTML-файл), попробуйте Jazzy. Это утилита с открытым исходным кодом, которая работает с любыми комментариями в стиле ///.

Установка и использование:

# Установка через Homebrew
brew install jazzy

# Запуск в папке проекта
jazzy --min-acl internal --output docs

Jazzy создаст папку docs с HTML-файлами. Вы получите документацию, очень похожую на официальную документацию Apple. Плюсы: не нужно менять структуру проекта, работает «из коробки». Минусы: нет поддержки статей и учебников, только символы кода.

Пример вывода: Jazzy сгенерирует страницу для каждого класса, структуры, протокола и перечисления, с полным списком свойств и методов, а также с их описаниями из комментариев.

Если вам нужна документация только для внутреннего использования (например, для команды), Jazzy — отличный выбор. Для публичной документации (как у Apple) лучше использовать DocC, так как он поддерживает более богатый контент.