7
3

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.

Xcode15以降でSwiftLintが動かないときの解決方法

Last updated at Posted at 2023-10-06

はじめに

Xcode15にアップデートしてSwiftLintを利用すると下記エラーが発生して動きませんでした。

Command PhaseScriptExecution failed with a nonzero exit code

解決方法はシンプルだったので紹介します。

環境

  • Xcode15
  • SwiftLint 0.46.4
  • swift 5.9

原因

Xcode14で追加されたBuild SettingのENABLE_USER_SCRIPT_SANDBOXINGフラグが原因でした。
Xcode14ではこのフラグがデフォルトでNO(無効)になっていたのですが、Xcode15からデフォルト値がYes(有効)に変更されたことが原因でSwiftLintが実行されなかったようです。

ENABLE_USER_SCRIPT_SANDBOXINGとは、ScriptPhasesがソースファイルや中間ビルド・オブジェクトにアクセスするのをブロックするかどうかを指定するフラグです。

解決方法

ENABLE_USER_SCRIPT_SANDBOXINGフラグをNo(無効)に変更する必要があります。
Xcodeのプロジェクト名→TARGETS→Build Settings→Build Options→User Script SandboxingをNoに変更

Build SettingsでUSER等と入力してフィルタリングするとすぐに見つけることができます。

スクリーンショット 2023-10-06 22.37.34.png

それでもエラーが出る場合

エラーが消えない場合は一度SwiftLintを設定している箇所を削除して、再度追加すると正しく動作する可能性があります。

Xcodeのプロジェクト名→TARGETS→Build Phases→Run Scriptを削除
再度プラスボタンを押下→New Run Script PhaseからSwiftLintを追加→ビルドしてエラーが消えるか確認

スクリーンショット 2023-10-06 22.42.30.png

7
3
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
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?