如何使用 Swift Package Manager 将 SwiftLint 与 iOS 应用程序集成?

jjo*_*son 17 ios swift-package-manager swiftlint xcode11

我正在 Xcode 11 (beta 5) 中创建一个新的 iOS 应用程序,我想尝试使用 Swift Package Manager 而不是 CocoaPods 来管理依赖项。

使用 SwiftLint 和 CocoaPods 时的一个常见模式是添加 SwiftLint 作为依赖项,然后添加一个构建阶段来执行${PODS_ROOT}/SwiftLint/swiftlint;这样,所有开发人员最终都会使用相同版本的 SwiftLint。

如果我尝试在 Xcode 中添加 SwiftLint 作为 SwiftPM 依赖项,我需要的可执行目标将被禁用:

添加包截图

我可以通过创建一个Package.swift没有产品或目标的虚拟对象并swift run swiftlint在我的构建阶段运行来伪造它,但感觉很奇怪:

// swift-tools-version:5.1
import PackageDescription

let package = Package(
    name: "dummy-package",
    products: [],
    dependencies: [
        .package(url: "https://github.com/realm/SwiftLint.git", from: "0.34.0")
    ],
    targets: []
)
Run Code Online (Sandbox Code Playgroud)

有没有办法在不创建虚拟包的情况下做到这一点?或者 Swift 包管理器只是不适合这个特定用例的工具?

Rol*_*tte 16

我使用的是 Xcode 14.3。您可以将 SwiftLint 作为 Swift 包集成到您的项目中。

  1. 在您的项目中,在该部分中导入 SwiftLint Package Dependencies

    要添加的 SwiftLint GitHub url:https://github.com/realm/SwiftLint.git

  2. 加载包后,系统会要求您添加SwiftLintFramework和/或swiftlint.

    不要勾选方框。只需点击Add Package按钮即可。

  3. 转到您的 Xcode 项目目标并进入Build Phases选项卡:

    单击+下的按钮Run Build Tool Pug-ins。从那里添加SwiftLintPlugin.

  4. 构建您的项目,Xcode 会询问Trust & Enable All插件。

    单击此按钮可启用 SwiftLint 插件。

SwiftLint 现在正在处理您的 Xcode 项目,您应该会看到触发的警告和错误。

.swiftlint.yml您可以通过将文件添加到项目的根目录来添加自定义规则。然后您可以使用所需的规则编辑此文件。有关可以添加的规则的更多见解,请查找SwiftLint 规则。有关如何设置自定义规则的示例,您可以查找ConfigurationSwiftLint 包索引文档的 部分。


Ale*_*ylo 7

所有滥用 iOS 代码依赖管理器来运行构建工具的方法都是老套和怪异的。

版本 SPM 兼容工具依赖项的正确方法是使用Mint:安装和运行 Swift CLI 包的包管理器。另请参阅更好的 iOS 项目:如何使用 mint 管理您的工具