投稿の経緯
これまでSwiftLintの導入はCocoaPodsを使用していましたが、Swift Package Managerでの導入を試みたので記事にします。
環境
Mac Monterey 12.3.1
Swift 5.6
Xcode 13.3.1
BuildToolsとPackage.swiftの作成
$ mkdir BuildTools
Xcodeプロジェクトが存在するディレクトリにBuildTools
フォルダを作成し、その中にPackage.swift
を追加する。
Package.swift
の中身は以下の通り。
// swift-tools-version: 5.6
import PackageDescription
let package = Package(
name: "BuildTools",
platforms: [.macOS(.v10_11)],
dependencies: [
.package(url: "https://github.com/realm/SwiftLint", .exact("0.43.1")),
],
targets: [.target(name: "BuildTools", path: "")]
)
$ touch Package.swift
また、Swift Package Managerの動作のために、BuildTools/Empty.swift
という空ファイルも作成しておきます。
ルールの追加
touch .swiftlint.yml
Xcodeプロジェクトが存在するディレクトリに.swiftlint.yml
ファイルを作成します。
# SwiftLintの対象外とする
excluded:
BuildToolsのパス
# 無効とするルール
disabled_rules:
- file_length
- function_body_length
- type_body_length
# デフォで無効とされたルールを有効とする
opt_in_rules:
- conditional_returns_on_newline
- closure_end_indentation
- closure_spacing
# ルールをカスタム
line_length: 450
type_name:
min_length: 2
max_length: 50
vertical_whitespace:
max_empty_lines: 2
ルールの一例として書いています。excludedにBuildToolsファイルのパスを指定して対象外にしておくことをオススメします。(大量にルールに引っかかるので...)
Run Scriptの追加
XcodeのRun Script
に以下のようにスクリプトを追加してください。
if which swiftlint >/dev/null; then
swiftlint autocorrect --format
swiftlint
else
echo "warning: Mint not installed, download from https://github.com/yonaskolb/Mint"
fi
これでビルド時にSwiftLintが動作します。
参考にした記事
おわりに
最後までご覧いただきありがとうございました。
こうしたほうがいいや、ここはちょっと違うなど気になる箇所があった場合、ご教示いただけると幸いです。