はじめに
昨日はSwiftFormatをSwiftPMで管理するについて書きました。
今日はSwiftLintをSwiftPMで管理できるようにしてみたいと思います。
「swiftpm-sample」というプロジェクトを作成しました。
ここにSwiftLintをいれてみます。
やりかた
各種ファイルを設定
swiftpm-sampleに移動します。
cd /Users/miyamototaishin/Desktop/swiftpm-sample
BuildToolsというフォルダを作成します。
mkdir BuildTools
BuildToolsに移動します。
cd BuildTools
Package.swift
を作成します。
touch Package.swift
Empty.swift
を作成します。
touch Empty.swift
Package.swift
を開きます。
open Package.swift
Package.swift
に以下をコピペします。
// swift-tools-version: 5.6
import PackageDescription
let package = Package(
name: "BuildTools",
dependencies: [
.package(url: "https://github.com/realm/SwiftLint.git", branch: "main")
],
targets: [.target(name: "BuildTools", path: "")]
)
ディレクトリを1つ上の階層に移動します。
cd ..
.swiftlint.yml
を作成します。
touch .swiftlint.yml
.swiftlint.yml
を開きます。
open .swiftlint.yml
.swiftlint.ymlを編集します
他にもたくさんルールがあるので公式のルール一覧を見てください
# チェック対象ファイル
included:
- ${TARGET_NAME}
Run Scriptを作成
① プロジェクトを選択します
② ターゲットを選択します
③ 「Build Phases」を選択します
④ 「+」を選択します
⑤ 「New Run Script Phase」を選択します
追加された「Run Script」に以下のスクリプトをコピペします。
cd BuildTools
xcrun --sdk macosx swift build -c release
先ほどと同じ手順でRun Scriptを作成します。
作成したRun Scriptに以下のスクリプトをコピペします。
cd BuildTools
xcrun --sdk macosx swift build -c release \
--package-path .build/checkouts/SwiftLint \
--product swiftlint
.build/checkouts/SwiftLint/.build/release/swiftlint lint --config $SRCROOT/.swiftlint.yml
ビルド
エラー出ました!!!
エラーが出てこんなに嬉しいことは他にないですね!
詰まった点
branch指定でmainを選択しないとなぜかできない
⭕️ .package(url: "https://github.com/realm/SwiftLint.git", branch: "main")
❌ .package(url: "https://github.com/realm/SwiftLint.git", version: "0.50.0")
❌ .package(url: "https://github.com/realm/SwiftLint.git", from: "0.50.0")
参考記事