Sourcery 2.2.5

Sourcery 2.2.5

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2024年6月

Krzysztof ZabłockiAnton DomashnevIlya PuchkaLiquidsoulEric HoracekRuslan Alikhamov 维护。



Sourcery 2.2.5

什么是 Sourcery?

Sourcery 会扫描你的源代码,应用你个人的模板,并为你生成 Swift 代码,让你能够使用元编程技术来节省时间并减少潜在错误。

使用它的好处有很多

  • 写下更少的重复代码,并使其更容易遵循 DRY 原则
  • 它允许你创建更好的代码,没有它很难维护,例如 执行测试中的属性级别的自动差异
  • 降低了重构时引入人为错误的风险。
  • Sourcery 不使用运行时技巧,实际上,它允许你利用编译器,甚至更多,创造更多的安全性。
  • 即时反馈: Sourcery 特设有内置守护进程支持,允许你在实时编写代码的同时,与生成代码并排编写模板。

Daemon demo

Sourcery 非常元,甚至用它来生成样板代码

目录 使用 DocToc 生成

为什么?

Swift 的运行时代码非常有限,并且没有元编程功能。这使得我们的项目包含了很多样板代码。

Sourcery 存在是为了让 Swift 开发者在停止重复做同样的事情的同时,仍然保持强类型化,避免错误并利用编译器。

你有没有过?

  • 不得不编写 equatable/hashable?
  • 不得不编写 NSCoding 支持?
  • 不得不实现 JSON 序列化?
  • 想使用 Lenses?

如果你做过这些,你可能会发现自己不得不编写重复的代码来处理这些场景,这感觉对吗?

更糟糕的是,如果你向一个类型添加新属性,所有这些实现都必须更新,否则你将遇到错误。在这些场景中,通常 编译器不会为你生成错误,这会导致代码容易出错的。

安装

  • 二进制形式

    发布标签 下载最新的预构建二进制文件。解压缩归档到目标位置并运行 bin/sourcery

  • CocoaPods

    将 'Sourcery' Pod 添加到您的 Podfile 并运行 pod update Sourcery。这将下载最新版本的二进制文件并将其放置到您的项目 CocoaPods 路径中,因此您将使用 $PODS_ROOT/Sourcery/bin/sourcery 来运行它。

  • 从源代码构建

    发布标签 下载最新版本的源代码,或克隆存储库并手动构建 Sourcery。

    • 使用 Swift Package Manager 构建

      在根目录中运行 swift build -c release。这将创建一个 .build/release 文件夹并将二进制文件放置在那里。将整个 .build/release 文件夹 移动到您想要的目的地,并使用 path_to_release_folder/sourcery 运行。

      注意:当使用 SPM 构建时,尚不支持 Swift 和 JS 模板。

    • 使用 Xcode 构建

      打开 Sourcery.xcworkspace 并使用 Sourcery-Release 方案构建。这将在 Derived Data 文件夹中创建 Sourcery.app。您可以将它复制到您想要的目的地,并使用 path_to_sourcery_app/Sourcery.app/Contents/MacOS/Sourcery 运行。

用法

Sourcery 是一个命令行工具,您可以使用以下命令手动运行它或在自定义构建阶段运行它

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

注意:此命令可能因 Sourcery 的安装方式而异(请参阅安装

命令行选项

  • --sources - 源 swift 文件的路径。您可以使用多个 --sources 选项提供多个路径。
  • --templates - 模板的路径。文件或目录。您可以使用多个 --templates 选项提供多个路径。
  • --output [默认:当前路径] - 输出路径。文件或目录。
  • --config [默认:当前路径] - 配置文件的路径。目录。请参阅 配置文件
  • --args - 传递给模板的额外参数。每个参数可以具有显式值或隐式 true 值。参数应该用逗号分隔,没有空格(即 --args arg1=value,arg2)。参数可以在模板中通过 argument.name 访问。
  • --watch [默认:false] - 监视代码和模板文件夹中的更改并自动重新生成。
  • --verbose [默认:false] - 启用详细日志记录。
  • --quiet [默认:false] - 关闭任何日志记录,仅发出错误。
  • --disableCache [默认:false] - 关闭解析数据的缓存。
  • --prune [默认:false] - 精简空生成的文件。
  • --version - 显示 Sourcery 的当前版本。
  • --help - 显示帮助信息。

配置文件

您还可以使用项目根目录中的 .sourcery.yml 文件提供参数,如下所示

sources:
  - <sources path>
  - <sources path>
templates:
  - <templates path>
  - <templates path>
output:
  <output path>
args:
  <name>: <value>

您可以使用 includeexclude 键排除一些源或模板。

sources:
  include:
    - <sources path to include>
    - <sources path to include>
  exclude:
    - <sources path to exclude>
    - <sources path to exclude>
templates:
  include:
    - <templates path to include>
    - <templates path to include>
  exclude:
    - <templates path to exclude>
    - <templates path to exclude>

您可以提供源路径或扫描的目标。

project:
  file:
    <path to xcodeproj file>
  root:
    <path to project sources root>
  target:
    name: <target name>
    module: <module name> //required if different from target name

您可以使用多个 projecttarget 对象从单个项目或多个项目中扫描多个目标。

注意:配置文件中的路径默认相对于配置文件路径。如果您想指定绝对路径,请以 / 作为开头。

功能

  • Stencil、Swift、JavaScript 模板
  • 监视模式
  • 源注释
  • 内联和按文件代码生成

有关更多信息,请参阅 文档

贡献

欢迎大家并为 Sourcery 做贡献!

很容易参与进来。请参阅贡献指南以获取更多详细信息。

贡献者名单可通过 GitHub 获取。

为了明确我们对社区的要求,Sourcery 采用了由贡献者公约定义的行为准则。该文件在许多开源社区中使用,我认为它很好地阐述了我的价值观。更多信息请见行为准则

许可证

Sourcery 可在 MIT 许可证下使用。有关更多信息,请参阅LICENSE

归属

此工具由

感谢!感谢

  • Mariusz Ostrowski 为创建标志。
  • Artsy Eidolon 团队,因为我们将其代码库用作解析器性能测试的占位数据。
  • Olivier Halligon 向我展示了他为 CLI 工具编写的设置脚本,这些脚本为我们的 rakefile 提供支持。

其他库/工具

如果你想要为与资产相关数据(如 .xib、.storyboards 等)生成代码,请使用 SwiftGen。SwiftGen 和 Sourcery 是互补的工具。

请确保查看我的其他库和工具,特别是

  • KZPlayground - 强大的 Swift 和 Objective-C playground
  • KZFileWatchers - 用于监控本地和远程文件更改的守护进程,用于构建其他开发者工具(Sourcery 使用它)

您可以在 twitter 上关注我,以了解关于我正在创建的其他项目的新闻/更新。