未使用なprotobufのmessageなどを検知するsbt pluginを作った

github.com

run sbt unusedProtoWarn

大まかな原理は、以前作った以下と同じ

xuwei-k.hatenablog.com

  • sbt-protocかつ、Scala projectという前提条件
    • たとえばsbt projectだとしても、Javaでのみ参照をしていても、それは解析しないので誤検知する
  • 前回同様、名前だけで判断で、型やpackageを判断しないので、全てを必ず検知可能なわけではない
  • そもそも前回同様project内部のものしか見ないため、定義したものが大量に外側から使われることを想定しているならば、(少なくともfilterしない限り)あまり使えない
  • scalametaで解析するのは前回と同様だが、proto内部のmessage一覧などは、sbt-protoc使ってprotocol bufferのpluginを書いた
  • 前回同様、該当するmessageなどのgit上での最終変更日などを取得する機能を入れた
  • scalafixのruleにするとかえって色々面倒になったので、scalameta直接使っている