環境
Swift: 5.9.2
Xcode: 15.1
Swiftlint: 0.53.0
確認方法
$ xcodebuild -version //Xcode
$ swift --version //swift
$ swiftlint --version //swiftlint
参考ページ
pod initでPodfileを作成します。
$ pod init
以下のファイルが作成されます。
このファイルに以下のような文言を追加します。
pod installを実行
pod fileに記述した内容を反映させます。
$ pod install
Podfile.lockのバージョンに従ってプロジェクトの依存関係をインストールします。以下のような結果になるかと思います。
もしもプロジェクトを開いている場合は一度閉じて、この白色のファイル(xcworkspaceファイル)を開きます。
Xcode上で設定を行う
以下の画像の手順で設定を行います。
『New Run Script Phase
』を開いて、以下をスクリプトとして挿入します。
『Run script
』が追加されるので、以下の文言をスクリプトに記述します。今回はPodsでインストールするため{"${PODS_ROOT}/SwiftLint/swiftlint"}
がポイントになってきます。
if which "${PODS_ROOT}/SwiftLint/swiftlint" >/dev/null; then
${PODS_ROOT}/SwiftLint/swiftlint
else
echo "warning: SwiftLint not installed, download from
https://github.com/realm/SwiftLint"
fi
もしも、うまく動かない!となったら、、、
公式の引用です。
Xcode15 では、ENABLE_USER_SCRIPT_SANDBOXING ビルド設定のデフォルト値を NO から YES に設定することで大幅な変更が加えられました。 その結果、SwiftLint はファイル権限の欠落に関連するエラーに遭遇します。 これは通常、次のように表示されます: error: Sandbox: swiftlint(19427) deny(1) file-read-data.
『User Script Sandboxing
』が 『No』 になっているか確認します。
shunsukeさんの記事を参考にさせていただいました!詳しく知りたい方は是非参考にしてください!
ここまでできたら、一旦Buildして確認してみます。
怒られていますね!!
- 型名違反(アンダースコアを型名で使用している)
- 無駄な改行
この二つで怒られてしまったので、無事SwiftLintが導入できていることが確認されました!
YAMLファイルを作成し、SwiftLintの細かなルールを設定を行う
このファイルに対して、ルールの設定をしてみます!
今回はSwiftLintのデフォルト設定となっている、型名の指定を無効化させます。完成イメージは以下のような感じです。型名にアンダースコアをつけると怒られていましたが、これを怒られないようにします。
まず、『YAMLファイル
』を作成します!
プロジェクトのカレントディレクトリをYMALファイルを作成したいディレクトリまで移動させます(cdコマンドを使う)移動したら、以下のコマンドを叩き、YAMLファイルを作成します。(プロジェクトファイルのディレクトリに移動してから行なってください。)
$ touch .swiftLint.yml
すると、以下の半透明のアイコン(隠しファイル)がプロジェクトファイルに追加されます。
隠しファイルの表示・非表示
com + shif + .この『.swiftLint.yml』にルールを記述し、ルールを変更していきます。追加する内容は以下の通りです。
ルールの特徴2つ
- デフォルト設定として
有効
になっているものを無効化
させる - デフォルト設定として
無効
になっているものを有効化
させる
今回は有効にされていたものを無効化させましたが、逆のパターンもあります。より理解を深めていけるよう、色々試していきたいと思います。
公式ページの以下の部分にルール設定について記載があるので、参考にしてみてください。