😺

unity build logのエラーを素早く発見したい

2021/12/13に公開

むかしにつくったOSSをちらっと紹介.

loglint っていうツールを作った

これはクソ長いビルドログから何がエラー原因なのかを抽出するのが非常に面倒くさくてつくった.
特にUnityのビルドログはエラーの文言に統一性がなく、Android/iOSのビルドログも入り混じってかなりカオス.
数万行以上のビルドログからこれら原因を抽出するのが非常に面倒臭い.
正規表現でログをなめて、マッチしたものをヘルプ付きで出力するのがloglintというコマンド

Install

buildすると $GOPATH/bin に入る

git clone git@github.com:mattak/loglint.git
cd loglint
make

Usage

例えば下記のようなルールファイルを定義する.

json
[
	{
		"detections": [
			"^ERROR: .+"
		],
		"help": "エラーが発生しました. ログから詳細を確認してください",
		"name": "general error",
		"type": "error"
	}
]

こうして、おくと "ERROR: .+" にマッチする行を全て洗い出して、該当する行数とマッチした文章をjsonで出力してくれる

/tmp/error.log
Building...
ERROR: file not found
ERROR: build script failed
$ cat /tmp/error.log | loglint | jq .
{
  "passed": false,
  "errors": [
    {
      "matches": [
        {
          "start": 1,
          "end": 2,
          "message": "ERROR: file not found"
        },
        {
          "start": 2,
          "end": 3,
          "message": "ERROR: build script failed"
        }
      ],
      "help": "エラーが発生しました. ログから詳細を確認してください",
      "name": "general error"
    }
  ],
  "warnings": null
}

シーンが見つからなかった時とか、Addressableの設定にミスがある時とか、Csharpのコンパイルエラーだとか、エラーが起きるたびにこの設定を追加している.
slackだとかにこのjsonを元にエラーメッセージを見やすく整形してビルド結果として返してあげることで、結構原因調査の時間が縮まるのでおすすめ.

Discussion