背景
xcodebuildを使ってビルドを行うと整理されていない不要なビルドログがたくさん出てしまうので、Travis CIを使ってテストを日常的に行っていたとしてもいざテストが落ちた場合にどこが問題あるのかがすぐに見つけられずイライラする事が多いと思います。
xcpretty
xcprettyとは
xcprettyを使うとxcodebuildが出力するビルドログをきれいに整理して色つきで出力できるようになります。利用方法もxcodebuildの結果をパイプで受け取るだけなので非常に簡単です。
ログの出力形式をrspec風にしたりJUnitレポート形式のxml出力等もできるようです。
xcpretty
xcprettyをTravis CIに導入する
xcprettyを導入するとTravis CIにおいても以下のようにログがきれいに整理され色付きで出力することが出来ました。画像の通りログの見た目・わかりやすさの違いは歴然です。
通常
導入後
インストールと設定
- .travis.ymlを用意してTravis CIでビルドを実行できるようにしておきます。
- gemでxcprettyをインストール
- Gemfileをリポジトリのトップレベルに用意しておくとTravis CIが勝手にインストールしてくれます。
- https://github.com/radioboo/XcprettySample/blob/master/Gemfile
- xcodebuildの出力をパイプしてxcprettyに渡すようにビルドコマンドを変更します。
xcodebuild test -scheme XcprettySample -destination "name=iPhone Retina (3.5-inch),OS=7.0" -configuration Debug | bundle exec xcpretty -c
重要な設定
Rakefileでビルドを行うような場合にテストが落ちてもrakeコマンドの終了ステータスが正常なため、Travis CI的には"Passed"となってしまうことがありました。xcodebuildコマンドの終了ステータスをrakeコマンドが引き継いでくれないためなので、これを回避するためにxcprettyのREADMEにもあるように、xcprettyコマンドの最後に"PIPESTATUS"を渡すように追記して対応を行いました。
xcodebuild test -scheme XcprettySample -destination "name=iPhone Retina (3.5-inch),OS=7.0" -configuration Debug | bundle exec xcpretty -c && exit ${PIPESTATUS[0]}
というわけでオススメ
これだけでログがきれいに整理されてテストの結果が非常に見やすくなって開発効率があがるのでオススメです。