web-dev-qa-db-ja.com

xcodebuildコマンドライン出力をフィルタリングする方法は?

コンソールからxcodebuildを実行すると、非常に詳細な出力が表示されます。警告とエラーのみを表示するために、出力を制限するオプションを見つけることができませんでした。

xcodebuildの出力をキャプチャしてフィルタリングする方法を探しています。パイプで動作するPythonソリューションが望ましいですが、コマンドラインベースのソリューションである限り、他のアプローチを受け入れることができます。

すでにこれを実行できるツールはありますか?

42
sorin

エラー出力メッセージのみを表示するには、次のように標準出力を/ dev/null(ブラックホールとして機能する特別なファイル)にリダイレクトします。

xcodebuild>/dev/null

エラー出力をファイルにキャプチャする場合は、次のようにできます。

xcodebuild 2> ./build_errors.log
20
Guillaume

xcodebuild -quietを使用します。

Xcodebuildのmanページによると:

-quiet:警告とエラー以外の出力を印刷しません。

ボーナス:他のツールは必要ありません! (私はxcodebuild | xcprettyも好きですが)

私はTravis CIを使用してビルドしますが、これは4 MBのログの後に不平を言います。この議論は問題を解決しました。

63
Amin Ariana

Rubyと呼ばれる宝石 xcpretty があります。

xcodebuildの出力をフィルター処理し、さまざまなフォーマッターとカラーリングも提供します。

41
Koraktor

これでは十分ではありません。/dev/nullにパイプすると、ビルドが失敗したことが表示されますが、理由はわかりません。理想的には、成功したコンパイラー・コマンドのすべてがなくても、エラーおよび/または警告のみを確認できるはずです。

これは基本的に仕事をします:

xcodebuild | grep -A 5 error:
35
rosejn

enter image description here

-quietは、現時点でそれを行うための最良の方法です。

6
weijia.wang

Swiftコマンドラインツール https://github.com/thii/xcbeautify があり、xcodebuild出力もフォーマットできます。

1
Thi

人間として見ることはxcprettyが大好きですが、他の場所に伝播するための自動設定でビルドエラーを見つける必要があり、関連情報だけを確実にキャプチャしたかったのです。次のsedコマンドはその目的を果たします。

xcodebuild | sed -nE '/error:/,/^[[:digit:]] errors? generated/ p'

出力:

main.c:16:5: error: use of undeclared identifier 'x'
    x = 5;
    ^
main.c:17:5: error: use of undeclared identifier 'y'
    y = 3;
    ^
2 errors generated.
1
ravron