playframeworkのバージョンアップ(->2.8)にともなって、Scalaを2.12.16にバージョンアップしたところ、冗長かつ間違った警告が大量に出力されるようになりました。
(Scalaの2.11のどこかでScalaコンパイラの仕様が変わったようです)
この警告出力を抑止するための設定です。
不適切な警告例
たとえばScalaテンプレート(*.scala.html)において、以下のようなケースがあります。
-
@import
に対して。利用しているにも関わらず!! - 引数定義の
@(引数)
に対しての警告 - 先頭のコメント行(
@***@
)に対して
またroutes
ファイルでも色々とでます。
設定方法
こちらに答えが記載されていました。Play2.8、Scala2.13向けのようですが。Scala2.12でも意図した結果を得られました。
build.sbt
に以下を記述すればOKです。(scalacOptions := Seq()
としているので上書きしています)
build.sbt
// =============================
// Disable annoying warning output in sbt
// https://stackoverflow.com/questions/37413032/ywarn-unused-import-triggering-on-play-routes-file
// =============================
scalacOptions := Seq(
"-Wconf:cat=unused-imports&site=.*views.html.*:s", // Silence import warnings in Play html files
"-Wconf:cat=unused-imports&site=<empty>:s", // Silence import warnings on Play `routes` files
"-Wconf:cat=unused-imports&site=router:s", // Silence import warnings on Play `routes` files
"-Wconf:cat=unused-imports&site=v1:s", // Silence import warnings on Play `v1.routes` files
"-Wconf:cat=unused-imports&site=v2:s", // Silence import warnings on Play `v2.routes` files
"-Wconf:cat=unused-imports&site=views.v1:s", // Silence import warnings on Play `views.v1.routes` files
"-Wconf:cat=unused-imports&src=.*routes.*:s",
"-Wconf:cat=unused-imports&src=.*html.*:s",
"-Wconf:cat=unused-imports&src=.*txt.*:s",
"-Wconf:cat=unused&site=.*views.html.*:s", // Silence import warnings in Play html files
"-Wconf:cat=unused&site=<empty>:s", // Silence import warnings on Play `routes` files
"-Wconf:cat=unused&site=router:s", // Silence import warnings on Play `routes` files
"-Wconf:cat=unused&site=v1:s", // Silence import warnings on Play `v1.routes` files
"-Wconf:cat=unused&site=v2:s", // Silence import warnings on Play `v2.routes` files
"-Wconf:cat=unused&site=views.v1:s", // Silence import warnings on Play `views.v1.routes` files
"-Wconf:cat=unused&src=.*routes.*:s",
"-Wconf:cat=unused&src=.*html.*:s",
"-Wconf:cat=unused&src=.*txt.*:s",
"-Wconf:cat=deprecation&site=controllers\\.v1.*&origin=scala.util.Either.right:s", // Silence deprecations in generated Controller classes
"-Wconf:cat=deprecation&site=.*v1.Routes.*&origin=scala.util.Either.right:s"
)