一套动手实践的 Rust 过程宏练习项目,包含五个带测试套件的任务骨架。
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
使用 Homebrew 安装 sourcery 可执行文件
brew install sourcery - 2
使用源代码、模板和输出路径运行 sourcery
./bin/sourcery --sources <sources path> --templates <templates path> --output <output path>
使用前须知
- 使用 Swift Package Manager 构建时不支持 JS 模板。
- Xcode 命令插件仅适用于 Xcode 14 及以上版本。
收录于专题
标签
常见问题
- 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 数据每日更新。
相关项目
免费的双向 Figma MCP 服务器,让编码智能体既能把设计转为代码,也能把代码写回 Figma 画布。
一个通过注解自动生成 getter、equals、builder 和日志字段等样板代码的 Java 库。
GenLayer 智能合约项目模板,以足球竞猜游戏为示例,包含测试、代码检查、CI 和 Next.js 前端。
一个面向企业应用的 Next.js 15 启动模板,集成 TypeScript、Tailwind CSS、测试与代码规范工具。
一款 macOS 应用,图形化控制 iOS、tvOS、watchOS 模拟器,底层封装 Apple 的 simctl 命令。