Repolode
krzysztofzablocki

krzysztofzablocki/Sourcery

基于 SwiftSyntax 的 Swift 代码生成工具,通过模板自动生成 Mock、Equatable、Codable 等样板代码。

Star
8,031
Fork
633
未关闭 Issue
95
最近提交
10天前

这是什么?

Sourcery 是一个面向 Swift 的命令行代码生成工具。它使用 Apple 的 SwiftSyntax 解析源码,把类型信息交给 Stencil 模板,再输出新的 Swift 文件。Mock、Equatable 与 Hashable 实现、枚举辅助代码、Lenses 以及 Codable 等重复性代码都可以由它生成。

比如生成 Mock 时,无需为每个协议手写 Mock 类,只需添加 `extension MyProtocol: AutoMockable {}` 这样的声明,Sourcery 就会生成对应代码。由于输出始终从源码重新生成,协议成员变化后 Mock 也会同步更新。

Sourcery 可以通过 Homebrew、CocoaPods、Mint 或 Swift Package Manager 安装,也可作为 Swift 包命令插件或 pre-commit 钩子使用。它支持监听模式,文件变化时自动重新生成,并可通过配置文件指定源路径、模板和参数。

核心功能

  • 01通过 AutoMockable 注解自动生成协议 Mock。
  • 02根据类型定义生成 Equatable、Hashable 和 Codable 实现。
  • 03支持编写自定义 Stencil 模板,自动化任意重复代码。
  • 04提供 watch 模式,源码或模板变化时自动重新生成。
  • 05可通过 Homebrew、CocoaPods、Mint、SPM 或 pre-commit 安装。

适用场景

  • 为 iOS 项目中的所有协议统一生成 Mock 和 Stub。
  • 随模型类型变化同步维护 Equatable、Hashable 或 Codable 代码。
  • 为项目中重复的架构模式编写专属代码生成模板。
  • 基于类型声明自动生成设置页面等 UI 代码。

快速上手

  1. 1

    使用 Homebrew 安装 sourcery 可执行文件

    brew install sourcery
  2. 2

    使用源代码、模板和输出路径运行 sourcery

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

使用前须知

  • 使用 Swift Package Manager 构建时不支持 JS 模板。
  • Xcode 命令插件仅适用于 Xcode 14 及以上版本。

收录于专题

标签

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

常见问题

Sourcery 是什么?
基于 SwiftSyntax 的 Swift 代码生成工具,通过模板自动生成 Mock、Equatable、Codable 等样板代码。 Sourcery 是一个面向 Swift 的命令行代码生成工具。它使用 Apple 的 SwiftSyntax 解析源码,把类型信息交给 Stencil 模板,再输出新的 Swift 文件。Mock、Equatable 与 Hashable 实现、枚举辅助代码、Lenses 以及 Codable 等重复性代码都可以由它生成。
Sourcery 可以免费使用吗?用的什么许可证?
Sourcery 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
Sourcery 还在维护吗?
活跃维护中。Sourcery 最近一次提交是在 2026年10月28日。
Sourcery 适合用来做什么?
为 iOS 项目中的所有协议统一生成 Mock 和 Stub。 随模型类型变化同步维护 Equatable、Hashable 或 Codable 代码。 为项目中重复的架构模式编写专属代码生成模板。 基于类型声明自动生成设置页面等 UI 代码。
Sourcery 怎么安装和运行?
使用 Homebrew 安装 sourcery 可执行文件: brew install sourcery 使用源代码、模板和输出路径运行 sourcery: ./bin/sourcery --sources <sources path> --templates <templates path> --output <output path>
在哪里获取 Sourcery?
源代码和安装说明在 GitHub 上:https://github.com/krzysztofzablocki/Sourcery

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目