最初に作ったのは結構前なのですが、OSSにしてなかったのでOSSにしました。 sbtでの設定方法はgithubのREADMEなどを見てください。 protocol buffersには多少の慣習というかstyle guideが公式にあり、
https://developers.google.com/protocol-buffers/docs/style
- メッセージ名は CamelCase
- フィールドは underscore_separated_names
- enumは CAPITALS_WITH_UNDERSCORES
- service名やserviceのメソッド名は CamelCase
などです。それらをチェックして、違反していたらコンパイルエラーにします。 諸事情によりわざと慣習に違反してる場合や外部のprotoで変更不可能な場合に備えて、特定のメッセージやフィールドなどをエラーにしないfilter的な仕組みもあります。
そもそも protocol buffersには、pluginという任意の言語でprotobufのASTのようなものを受けとって色々出来る仕組み があり、 さらにscalapbが依存してる protoc-bridge や sbt-protoc は、独自に手軽に(?)scalaやjavaでpluginを書ける仕組みがあって、 それを使っています。
公式のstyle guideそんなに多く書いてないので、一度リリースすればあまりやることないかもしれませんが、 protoc-bridgeの新しいversion出たら追従などはやります。
あとは使っている依存ライブラリが、他の組み合わせによっては衝突
(scala-jsのclosure compilerが古いprotobufに依存してる、sbt 1.x は protobuf-java 3.3 に依存してる、など)
する可能性があるので、 それの対策 が必要ならやるかもしれません。
shaded バージョンもリリースしました