実現したいこと
ChatGTPでプログラムを書いている初心者レベルの人です。
ChatGTPでXcodeのランスクリプトというコードをビルドしたりすると起動して、実行してくれる機能があるみたいです。BuildPhaseです。
それで「エラーが発生した場合に自動で”エラー行、エラー内容、質問内容”をクリップボードにコピペしてくれて」
あとは貼り付けするだけで以下のことを貼り付けで書いてくれるプログラムを作りたいんです。
楽にChatGTPとプログラムできそうでいいと思ったからです。
毎回「エラーが〜行目でエラー:error、このエラーはなんですか?勉強のために解説してください」と書く無意味な時間の時短を狙ってます。
エラーの発生した行数の場所
エラーの内容
”上記のエラーがでました。修正してください”
熟練の聡明なプログラマーの方、初心者にご教示をよろしくお願いいたします。
前提
それで、ChatGTPと下記のコードを一緒に作ったんですがエラーが調べてもわからずお手上げでした。
どこでエラーが発生しているかも詳細をみても不明でした。
そもそもXcodeのランスクリプトで不可能そうなことをやっているのでしょうか。
発生している問題・エラーメッセージ
下記のエラー以外にこのエラーの詳細が見える場所があるようなので、確認しましたがエラーが出ている場所がわかりませんでした。 Showing Recent Messages Command PhaseScriptExecution failed with a nonzero exit code
該当のソースコード
#!/bin/bash # プロジェクトのパスを指定 project_path="パス" # ビルド実行 sleep $build_delay output=$(xcodebuild -project "$project_path" 2>&1) result=$? # エラーがあった場合にエラーメッセージをクリップボードにコピーする if [ $result -ne 0 ]; then error_line=$(echo "$output" | grep -E "^(/.+:[0-9+:[0-9]+: error:|fatal error:)" | sed -E "s/^[^0-9]*([0-9]+).*/\1/") error_message=$(echo "$output" | grep -E "^(/.+:[0-9+:[0-9]+: error:|fatal error:)" | sed -E "s/.*error: (.*)$/\1/") error_text="エラー内容を修正してください。" echo "Error occurred at line $error_line: $error_message $error_text" | pbcopy exit 1 fi
試したこと
下記のコードを削除した場合動作はするので、ここが問題だとは特定していますが、まともに思えます。お手上げでした。
if [ $result -ne 0 ]; then
error_line=$(echo "$output" | grep -E "^(/.+:[0-9+:[0-9]+: error:|fatal error:)" | sed -E "s/^[^0-9]([0-9]+)./\1/")
error_message=$(echo "$output" | grep -E "^(/.+:[0-9+:[0-9]+: error:|fatal error:)" | sed -E "s/.error: (.)$/\1/")
error_text="エラー内容を修正してください。"
echo "Error occurred at line $error_line: $error_message $error_text" | pbcopy
exit 1
fi
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

0 コメント