読者です 読者をやめる 読者になる 読者になる

渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きく慣れるように。。。 ※所属団体とは一切関係がありません

Actionの引数違いで起こるUnityクラッシュ案件


f:id:esakun:20150730215258g:plain

環境

  • Unity5.4.2f1

かなりハマってしまったのでメモ。

こちらの数行のソースコードを御覧ください。
gist.github.com

一見問題なさそうなコードですが、引数違いの関数ををActionとして代入しちゃっています。
※ちなみにコンパイルエラーになりません

このコード間違えて実行してしまうと、Unityがクラッシュしてしまいますのでご注意を。

Hoge関数の第1第2引数共にデフォルト引数を設定しているためコンパイルエラーにならないのだと思われます。

経緯

開発していた際にふと発生したクラッシュ事案。
僕のコミット後から発生していることが分かりましたが、修正箇所を読んでもさっぱり分かりませんでした。

Unityエディタで実行してもクラッシュしてしまうので、どこまでコードが動いているのか非常に突き止めづらく、最終ブレークポイントを細かく打ちつつ、原因を探り当てたという、非常に無駄な時間を過ごした思い出です。

先程のサンプルソースコードは数行の1ファイルなので間違いにはすぐに気づきますが、大規模開発しているとそうはいきません。

しかもコンパイルエラーにならないため、テスト環境を通り抜け、最悪本番環境までアップされてしまう可能性もあります。
また、クラッシュしてしまうので大事故の元です。

まとめ

「関数を追加したら単体テストを心がける」大切さを知りました。またコードレビュー時には特に注意をしないといけない案件だということが分かりました。

あわせてどうぞ

www.shibuya24.info

www.shibuya24.info

www.shibuya24.info