wartremoverを使ってscalapbのapplyのデフォルト引数を禁止する

というのを作りました。

scalapbというのは、scala向けのprotocol buffersやgRPCのためのライブラリですが、protobufのmessageに対応するcase classのコンパニオンオブジェクトのapplyには、すべて(protobuf上のデフォルト値と同様の)デフォルト引数が設定されています。

これは便利なときもあるのですが、意図せず使ってしまってバグることも多いので、以前自分がpull reqして、デフォルト引数がないファクトリーメソッドを別途追加したことがありました。

github.com

つまりデフォルト引数によるミスを防ぎたい場合は、こっちの "of" を使えばいいです。 そして、ofに書き換える箇所を探すのにあたって、大量にあって探しづらいのでwartremoverでwarnかerrorにしてくれるものを作りました。

(wartremoverには、デフォルト引数の"定義"を警告するやつはあるけど、使用側はない?どちらにしろ、他のやつは許容して、scalapbのやつだけ警告したかったので作った)

本当はscalafixで自動書き換え作りたかったのですが、そんなにすぐに作れる能力がなかったので、誰か作って・・・。

gist.github.com