Swiftlintをプロジェクトに設定する

swiftlintを使ってなるべくスマートなコードを書けるようにする際のswiftlintの設定方法です。

Homebrew インストール

homebrewがインストールされている場合はスキップします。

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

brewでswiftlintをインストール

こちらもすでにインストール済みならば次のステップに進みます。

$ brew install swiftlint

プロジェクト内のBuild PhasesのRun Scriptにビルド時に実行するシェルスクリプトを記述

Run Script内に記述するコード

file

※ IntelMacとM1 Apple Siliconでは、brewのパスの影響でswiftlintの場所が微妙に違うためどちらのPCでも対応できるように条件分岐によってswiftlintを実行できるようにしてあります。

swiftlint_enable=true

if ${swiftlint_enable}; then
if type "/opt/homebrew/bin/swiftlint"  > /dev/null 2>&1; then
## format autocorrect 
/opt/homebrew/bin/swiftlint --fix --format --config .swiftlint.yml
## format check
/opt/homebrew/bin/swiftlint
elif type "/usr/local/bin/swiftlint" > /dev/null 2>&1; then
## format autocorrect
/usr/local/bin/swiftlint --fix --format --config .swiftlint.yml
## format check
/usr/local/bin/swiftlint
else
  echo "swiftlint is not installed."
fi
fi

.swiftlint.ymlをプロジェクトのルートに作成

最低限のオプションを設定

※ 1ファイルが大きく、メソッドの中も記述が多く行数の警告やエラーを意図的に無効にしている設定です。

# document: https://github.com/realm/SwiftLint
- cyclomatic_complexity
- function_body_length # メソッドの行数超過
- file_length # ファイルの行数超過
- type_body_length # コードの行数超過

# 無効にするルール
disabled_rules:

type_name:
  min_length: 3
  max_length: 40

identifier_name:
  min_length: # only min_length
    error: 2 # only error
  excluded: # excluded via string array
    - id
    - URL
    - x
    - y
    - vc
    - on
MacOS $ sw_vers;xcodebuild -version;swift --version
ProductName:	macOS
ProductVersion:	12.2.1
BuildVersion:	21D62
Xcode 13.2.1
Build version 13C100
swift-driver version: 1.26.21 Apple Swift version 5.5.2 (swiftlang-1300.0.47.5 clang-1300.0.29.30)
Target: x86_64-apple-macosx12.0

Category