弃用通知:此仓库已被弃用,因为 SwiftLint 集成现在已作为一等功能集成到 Danger Swift 中。 您可以阅读 此问题 以了解更多背景信息。 此仓库将继续可用作旧版使用,但新项目不应使用此仓库


CircleCI

Danger SwiftLint

用于 SwiftLintDanger Swift 插件。 这样您就可以在您的 pull request 上获得 SwiftLint 警告!

注意:如果您正在寻找此 Danger 插件的 *Ruby* 版本,它已被移动到这里。)

用法

像往常一样 安装和运行 Danger Swift,并在您的 CI 配置文件中安装 SwiftLint。 像这样:

dependencies:
  override:
  - npm install -g danger # This installs Danger
  - brew install danger/tap/danger-swift # This installs Danger-Swift
  - brew install swiftlint # This is for the Danger SwiftLint plugin.

然后使用以下 Dangerfile.swift

// Dangerfile.swift

import Danger
import DangerSwiftLint // package: https://github.com/ashfurrow/danger-swiftlint.git

SwiftLint.lint()

这将检查已创建和修改的文件

内联模式

如果您希望 lint 结果显示在 diff 中而不是评论中,您可以使用 inline_mode 选项。 diff 之外的违规行为将显示在 danger 的 fail 或 warn 部分。

SwiftLint.lint(inline: true)

配置 & 目录

您还可以使用 configFile 参数指定配置文件的路径,并使用 directory 参数指定要 lint 的目录的路径。 这在你想要为不同的目录使用不同的配置文件时很有用。 例如,Harvey 想要以不同于源文件的方式检查测试文件,因此他们有以下设置

SwiftLint.lint(directory: "Sources", configFile: ".swiftlint.yml")
SwiftLint.lint(directory: "Tests", configFile: "Tests/HarveyTests/.swiftlint.yml")

检查所有文件

默认情况下,只检查已添加或修改的文件。

在这种情况下,无法使用 嵌套配置,因为 Danger SwiftLint 会单独检查每个文件,这样做会禁用嵌套配置。 如果你想了解更多细节,请阅读整个问题这里

但是,您可以使用 lintAllFiles 选项来检查所有文件。 在这种情况下,Danger SwiftLint 不会单独检查文件,这使得嵌套配置可以工作。 这与您在根文件夹上运行 swiftlint 相同

SwiftLint.lint(lintAllFiles: true)

自定义 SwiftLint 二进制路径

默认情况下,Danger SwiftLint 运行 swiftlint,假设它是全局安装的。 但是,在某些情况下,使用不同的路径是有意义的。 一个例子是您使用 CocoaPods 安装了 SwiftLint。

要使用另一个二进制文件,您可以使用 swiftlintPath 选项

SwiftLint.lint(swiftlintPath: "Pods/SwiftLint/swiftlint")

贡献

如果您发现错误,请打开一个 issue! 或者一个 pull request 😉

不,我是认真的。

这是我写的第一个命令行 Swift,也是任何人写的第一个 Danger Swift 插件,所以如果有什么不工作,我真的很需要你的帮助来找出问题。

一个好的开始是编写一个失败的单元测试。 然后您可以尝试修复错误。 首先,您需要 fork 该 repo 并在本地克隆您的 fork。 构建它并运行单元测试。

git clone https://github.com/YOUR_USERNAME/danger-swiftlint.git
cd danger-swiftlint
swift build
swift test

好吧,在继续之前,验证到目前为止一切正常。 要编写您的测试并修改插件文件,请运行 swift package generate-xcodeproj。 打开生成的 Xcode 项目,并享受代码自动完成和内联文档的现代性。 您甚至可以从 Xcode 运行单元测试(有时结果与运行 swift test 不一致)。

单元测试难以覆盖的一个地方是与 swiftlint 命令行工具的集成。 如果您在那里更改代码,请打开一个 pull request(像这个)来测试一切是否正常工作。

自定义

有无数种方法可以为个人用例自定义此插件。 在构建 此插件的 Ruby 版本之后,我意识到很难扩展一个适用于所有人的工具。 因此,我将此项目视为一个模板,您可以 fork 并根据您的喜好进行自定义!

  1. Fork 这个项目。
  2. 更改 import DangerSwiftLint 包 URL 以指向您的 fork。
  3. 在对插件进行更改后,将其推送到您的 fork 并推送新的 tag

因为您需要标记一个新版本,所以测试您的插件可能很棘手。 我构建了一些基本的单元测试,所以您应该能够对大多数更改使用测试驱动开发。

如果您认为您有一个真正通用的功能,此插件的大多数用户都会从中受益,我将感谢您的 pull request。

许可证

#MIT4Lyfe

一个有趣的 GIF

当您检查您的 swift 代码时的感受