リモートでは壊れたことがなくローカル特有の話で、わからんと最近なっている事象。
`mix dialyzer` をローカルで実行したら、大量の private function 達が
unused_fun
Function <defp にしてる private function> will never be called.
判定されて、`done (warnings were emitted)` の結果に終わる現象にときどき遭遇している。これらの function はもちろん use しているので、矛盾が発生していることになっている。
この不具合を手っ取り早く直すには、_build/ を rm -rf して mix.compile しなおすのがお手軽で、その後はエラー吐かずに mix dialyzer 正常実行できるようになる。
なお、これが正しい直し方なのかは知らない。GitHub issue 漁ってみて、似たような別件で joseさんが _build と deps 一回消して入れ直してみたらとパワーな提案を言われてたので転用してみた。まあ _build と deps はリモート push しないだろうからローカルで再現できてもリモートでは 都度 compile が走る結果、不具合起こらないというのは要因としてはありそう。
ローカル実行時のぶっ壊れ現象は、private 関数の呼び出し側に手を加えたときに起きがちな体感ではあるが、他にも壊れるトリガーがある気配を感じるので、結局何が原因なのかよくわからない。