はじめに
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等と入力してフィルタリングするとすぐに見つけることができます。
それでもエラーが出る場合
エラーが消えない場合は一度SwiftLintを設定している箇所を削除して、再度追加すると正しく動作する可能性があります。
Xcodeのプロジェクト名→TARGETS→Build Phases→Run Scriptを削除
再度プラスボタンを押下→New Run Script PhaseからSwiftLintを追加→ビルドしてエラーが消えるか確認