4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Swift Package ManagerでSwiftLintを導入してみた

Posted at

投稿の経緯

これまで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の中身は以下の通り。

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.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に以下のようにスクリプトを追加してください。

.swift
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が動作します。

参考にした記事

おわりに

最後までご覧いただきありがとうございました。
こうしたほうがいいや、ここはちょっと違うなど気になる箇所があった場合、ご教示いただけると幸いです。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?