Danger Swift 插件,用于在 CI 上运行 Periphery。
此插件将通过 Danger Swift 注释 periphery 检测到的未引用代码。
将 DangerSwiftPeriphery 添加到您的 Package.swift
依赖项中
.package(url: "https://github.com/taji-taji/DangerSwiftPeriphery.git", from: "1.0.0")
将 DangerSwiftPeriphery 添加到 DangerDependencies
目标的依赖项中
.product(name: "DangerSwiftPeriphery", package: "DangerSwiftPeriphery")
以下是一个完整的 Package.swift
示例。
let package = Package(
// ...
dependencies: [
// Danger
.package(url: "https://github.com/danger/swift.git", from: "3.0.0"), // dev
// Danger Plugins
// 1. Add DangerSwiftPeriphery to your `Package.swift` dependencies:
.package(url: "https://github.com/taji-taji/DangerSwiftPeriphery.git", from: "1.0.0"), // dev
],
targets: [
// ...
// Add DangerSwiftPeriphery to dependencies in DangerDependencies.
.target(name: "DangerDependencies",
dependencies: [
.product(name: "Danger", package: "swift"),
// 2. Add DangerSwiftPeriphery to your dependencies of `DangerDependencies` target:
.product(name: "DangerSwiftPeriphery", package: "DangerSwiftPeriphery"),
]),
// ...
]
)
如果您有一个 .periphery.yml
文件,只需在 Dangerfile.swift
中包含以下内容
import Danger
import DangerSwiftPeriphery
DangerPeriphery.scan()
或者,periphery 选项可以作为参数传递。
import Danger
import DangerSwiftPeriphery
DangerPeriphery.scan(arguments: [
"--workspace MaApp.xcworkspace",
"--schemes MyApp",
"--index-store-path /path/to/index/store",
"--skip-build"
])
// or use PeripheryScanOptions enum as array
DangerPeriphery.scan(arguments: [
PeripheryScanOptions.workspace("MaApp.xcworkspace"),
PeripheryScanOptions.schemes(["MyApp"]),
PeripheryScanOptions.indexStorePath("/path/to/index/store"),
PeripheryScanOptions.skipBuild
])
// or use PeripheryScanOptions enum with resultBuilder
DangerPeriphery.scan {
PeripheryScanOptions.workspace("MaApp.xcworkspace")
PeripheryScanOptions.schemes(["MyApp"])
PeripheryScanOptions.indexStorePath("/path/to/index/store")
PeripheryScanOptions.skipBuild
}
// All three scan methods above behave the same.
未来,如果 Periphery 添加了一个新选项,而此插件中未定义该选项,则可以使用 .custom
。 例如,如果新版本的 Periphery 添加了一个 --new-option
选项,而此插件的 PeripheryScanOptions
中未定义该选项,则可以使用 PeripheryScanOptions.custom("--new-option foo")
来使用 --new-option
。
通过将 shouldComment
选项设置为 false,此插件将不会在目标 pull request 上进行注释。
您可以通过将此选项设置为 false 并使用扫描方法的返回值来手动处理扫描结果。
import Danger
import DangerSwiftPeriphery
let result = DangerPeriphery.scan(shouldComment: false)
// handle scan result manually
switch result {
case let .success(violations):
// handle scan violations
for violation in violations {
warn(message: violation.message,
file: violation.filePath,
line: violation.line)
}
case let .failure(error):
// handle scan error
fail(error.localizedDescription)
}
您还可以指定 periphery 二进制文件的位置。
import DangerSwiftPeriphery
DangerPeriphery.scan(peripheryExecutable: "/path/to/periphery")
Debug 选项可用于输出调试信息。 这可以通过以下方式之一完成。
verbose
参数
verbose
参数设置为 true。(默认值:false)// in Dangerfile.swift
DangerPeriphery.scan(verbose: true)
DANGER_SWIFT_PERIPHERY_DEBUG
环境变量
DANGER_SWIFT_PERIPHERY_DEBUG=1
。 此环境变量将覆盖上面描述的 verbose
参数的值。