Repolode
krzysztofzablocki

krzysztofzablocki/Sourcery

Генератор кода для Swift на базе SwiftSyntax, который с помощью шаблонов создаёт шаблонный код: моки, реализации Equatable и Codable.

Звёзды
8,031
Форки
633
Открытые issues
95
Последний коммит
9 дней назад

Что это?

Sourcery — генератор кода для Swift с командной строкой. Он разбирает исходные файлы Swift с помощью SwiftSyntax от Apple и передаёт полученную информацию о типах в шаблоны Stencil, которые затем создают новые файлы Swift. Так можно избавиться от повторяющегося кода: моков протоколов, реализаций равенства и хеширования, вспомогательных конструкций для case enum, линз и соответствий Codable.

Например, чтобы сгенерировать моки, вместо ручного написания класса-мока для каждого протокола достаточно добавить аннотацию вроде `extension MyProtocol: AutoMockable {}`, и Sourcery создаст мок. Поскольку код генерируется заново на основе исходников, моки остаются актуальными при изменении членов протокола.

Sourcery доступен как бинарный файл, который можно установить через Homebrew, CocoaPods, Mint или Swift Package Manager; его также можно использовать как командный плагин Swift package или pre-commit hook. В режиме watch код генерируется заново при изменении файлов. Для настройки исходников, шаблонов и аргументов предусмотрен конфигурационный файл.

Ключевые возможности

  • 01Генерирует моки протоколов по аннотации AutoMockable.
  • 02Создаёт реализации Equatable, Hashable и Codable на основе определений типов.
  • 03Позволяет писать собственные шаблоны Stencil для автоматизации произвольных шаблонов кода.
  • 04В режиме watch повторно генерирует код при изменении исходников или шаблонов.
  • 05Устанавливается через Homebrew, CocoaPods, Mint, SPM или pre-commit.

Сценарии использования

  • Создание единообразных моков и заглушек для всех протоколов в iOS-проекте.
  • Поддержание кода Equatable, Hashable или Codable в актуальном состоянии при изменении типов моделей.
  • Создание шаблонов генерации кода для повторяющихся архитектурных паттернов проекта.
  • Автоматизация экранов настроек и другого UI-кода на основе объявлений типов.

Быстрый старт

  1. 1

    Установите бинарный файл sourcery с помощью Homebrew

    brew install sourcery
  2. 2

    Запустите sourcery, указав пути к исходным файлам, шаблонам и результату

    ./bin/sourcery --sources <sources path> --templates <templates path> --output <output path>

Что важно знать

  • Шаблоны, написанные на JS, не поддерживаются при сборке с помощью Swift Package Manager.
  • Плагин команд Xcode доступен только начиная с Xcode 14.

В подборках

Темы

#swift#code-generation#metaprogramming#templates#ios#testing#boilerplate#codegen#codegenerator

Частые вопросы

Что такое Sourcery?
Генератор кода для Swift на базе SwiftSyntax, который с помощью шаблонов создаёт шаблонный код: моки, реализации Equatable и Codable. Sourcery — генератор кода для Swift с командной строкой. Он разбирает исходные файлы Swift с помощью SwiftSyntax от Apple и передаёт полученную информацию о типах в шаблоны Stencil, которые затем создают новые файлы Swift. Так можно избавиться от повторяющегося кода: моков протоколов, реализаций равенства и хеширования, вспомогательных конструкций для case enum, линз и соответствий Codable.
Sourcery можно использовать бесплатно? Какая у него лицензия?
Sourcery распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
Sourcery всё ещё поддерживается?
Активно поддерживается. Последний коммит в Sourcery — 28 окт. 2026 г..
Для чего можно использовать Sourcery?
Создание единообразных моков и заглушек для всех протоколов в iOS-проекте. Поддержание кода Equatable, Hashable или Codable в актуальном состоянии при изменении типов моделей. Создание шаблонов генерации кода для повторяющихся архитектурных паттернов проекта. Автоматизация экранов настроек и другого UI-кода на основе объявлений типов.
Как установить Sourcery?
Установите бинарный файл sourcery с помощью Homebrew: brew install sourcery Запустите sourcery, указав пути к исходным файлам, шаблонам и результату: ./bin/sourcery --sources <sources path> --templates <templates path> --output <output path>
Где скачать Sourcery?
Исходный код и инструкции по установке — на GitHub: https://github.com/krzysztofzablocki/Sourcery

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Практический воркшоп из пяти проектов на Rust procedural macros: в каждом есть заготовка и набор тестов trybuild, которые нужно реализовать.

Обучающие материалы#rust#procedural-macros#metaprogramming
4,9 тыс.+1 за неделю1,2 тыс.RustApache-2.0Обновлён 3 месяца назад