DangerXCodeSummary

一个 Danger-Swift 插件,可以将来自 xcodebuild 的构建错误、警告和单元测试结果添加到您的 Danger 报告中。

灵感来源于 danger-xcode_summary

DangerXCodeSummary

入门指南

安装 DangerSwiftCoverage

Swift Package Manager(性能更高)

您可以使用“完整的 SPM”解决方案来安装 danger-swiftDangerXCodeSummary

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
        ...
    ]
)
import DangerXCodeSummary

let summary = XCodeSummary(filePath: "result.json")

Marathon

import DangerXCodeSummary // package: https://github.com/f-meloni/danger-swift-xcodesummary.git

let summary = XCodeSummary(filePath: "result.json")

使用 SPM 运行

DangerXCodeSummary 可以与 SPM 一起使用(此 repo 在 Linux CI 上使用它),但目前,如果您使用 SPM,则不会生成内联失败测试消息。 要生成报告,请运行

swift test | XCPRETTY_JSON_FILE_OUTPUT=result.json xcpretty -f `xcpretty-json-formatter`

将报告发送到 Danger

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()