一个 Danger-Swift 插件,可以将来自 xcodebuild 的构建错误、警告和单元测试结果添加到您的 Danger 报告中。
灵感来源于 danger-xcode_summary
您可以使用“完整的 SPM”解决方案来安装 danger-swift
和 DangerXCodeSummary
。
Package.swift
let package = Package(
...
products: [
...
.library(name: "DangerDeps", type: .dynamic, targets: ["DangerDependencies"]), // dev
...
],
dependencies: [
...
// Danger Plugins
.package(url: "https://github.com/f-meloni/danger-swift-xcodesummary", from: "0.1.0") // dev
...
],
targets: [
.target(name: "DangerDependencies", dependencies: ["Danger", "DangerXCodeSummary"]), // dev
...
]
)
Dangerfile.swift
import DangerXCodeSummary
let summary = XCodeSummary(filePath: "result.json")
Sources
中创建一个名为 DangerDependencies
的文件夹,并在其中创建一个空文件,例如 Fake.swiftDanger
,请使用 swift run danger-swift command
Package.swift
中注释掉。 这可以防止开发依赖项与您的框架一起下载和编译。Dangerfile.swift
import DangerXCodeSummary // package: https://github.com/f-meloni/danger-swift-xcodesummary.git
let summary = XCodeSummary(filePath: "result.json")
~/.danger-swift
文件夹DangerXCodeSummary 可以与 SPM 一起使用(此 repo 在 Linux CI 上使用它),但目前,如果您使用 SPM,则不会生成内联失败测试消息。 要生成报告,请运行
swift test | XCPRETTY_JSON_FILE_OUTPUT=result.json xcpretty -f `xcpretty-json-formatter`
summary.report()
if summary.errorsCount > maxErrorCount {
fail("There are more than \(maxErrorCount) errors"
}
if summary.warningsCount > maxWarningsCount {
fail("There are more than \(maxWarningsCount) warnings"
}
不显示警告
let summary = XCodeSummary(json: JSONFile.jsonObject(fromString: reportTestJSON), dsl: dsl, resultsFilter: { result in
return result.category != .warning
})
summary.report()
过滤掉特定路径的任何错误或警告
let summary = XCodeSummary(json: JSONFile.jsonObject(fromString: warningsJSON), dsl: dsl, resultsFilter: { result in
guard let file = result.file else { return true }
return !file.contains("Sources/DangerXCodeSummary/")
})
summary.report()