sbtで "-Ywarn-unused" や "-Ywarn-unused-import" を設定する際のベストプラクティス

前提や問題点

  • "-Ywarn-unused" と "-Ywarn-unused-import" は、Scala2.11以降の機能
  • REPLでこれが有効になるとうざいだけなので、REPLのときのみ無効にしたい


大体の答え↓
http://stackoverflow.com/a/27858944/605582

filterしないといけないの自分もわかりずらいと思ったけど、まぁ考えてもしょうがない(?)ので、こういうものだと覚えよう・・・。


Scala2.10ともcross buildする際に対応させた、かつ、自分用にデフォルトでよく設定するscalacOptionを合わせたやつ、を忘備録として書いておく

val unusedWarnings = (
  "-Ywarn-unused" ::
  "-Ywarn-unused-import" ::
  Nil
)

scalacOptions ++= (
  "-deprecation" ::
  "-unchecked" ::
  "-Xlint" ::
  "-language:existentials" ::
  "-language:higherKinds" ::
  "-language:implicitConversions" ::
  Nil
)

scalacOptions ++= PartialFunction.condOpt(CrossVersion.partialVersion(scalaVersion.value)){
  case Some((2, v)) if v >= 11 => unusedWarnings
}.toList.flatten

 
Seq(Compile, Test).flatMap(c =>
  scalacOptions in (c, console) ~= {_.filterNot(unusedWarnings.toSet)}
)