sbtでScapegoatを使う
Scapegoatとは
静的コードアナライザでFindBugsやcheckstyle、ScalaのScalastyleと同様の機能を提供する((公式)https://github.com/sksamuel/scapegoatより)
なんでScapegoatか
FindbugsもScalaで使えるが、Scalaで使うとノイズが入る。 例えば、以下のようなコードで解析すると、バグも検出してくれるけど、それ以外の対応不要と思われるものも検出される。
object Main extends App { val test: String = null if (test == null) { new RuntimeException(test) } }
これは以下でも指摘されている。
類似ツールは
以下参照。ただし、WartRemoverは公式にメンテナンスやめたってかいてあるのでアウト
使い方
plugins.sbtに以下記述
addSbtPlugin("com.sksamuel.scapegoat" %% "sbt-scapegoat" % "1.0.7")
バージョンにもよるかもだけど、build.sbtに以下を記述しないと動かなかった
scapegoatVersion in ThisBuild := "1.3.2" scalaBinaryVersion in ThisBuild := "2.12"
以下、参考
あとはタスク実行
sbt clean scapegoat
target/scala-2.12/scapegoat-report/scapegoat.htmlにレポートができる。
throwしてないのはレポートしてくれなかったorz