diff --git a/build.sbt b/build.sbt index ff42d45..919c98b 100644 --- a/build.sbt +++ b/build.sbt @@ -18,8 +18,8 @@ addSbtPlugin("com.dwijnand" % "sbt-dynver" % "3.0.0") addSbtPlugin("com.dwijnand" % "sbt-travisci" % "1.1.1") addSbtPlugin("com.geirsson" % "sbt-scalafmt" % "1.6.0-RC3") addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.3.3") +addSbtPlugin("org.wartremover" % "sbt-wartremover" % "2.2.1") scalafmtOnCompile := true scalafmtConfig := Some(baseDirectory.value / "src" / "main" / "resources" / "scalafmt.conf") - diff --git a/project/plugins.sbt b/project/plugins.sbt index e249b2e..be9935d 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,2 +1,3 @@ libraryDependencies += { "org.scala-sbt" %% "scripted-plugin" % sbtVersion.value } addSbtPlugin("com.geirsson" % "sbt-scalafmt" % "1.6.0-RC3") +addSbtPlugin("org.wartremover" % "sbt-wartremover" % "2.2.1") \ No newline at end of file diff --git a/src/main/scala/ScalazPlugin.scala b/src/main/scala/ScalazPlugin.scala index ee69909..1fd8cbc 100644 --- a/src/main/scala/ScalazPlugin.scala +++ b/src/main/scala/ScalazPlugin.scala @@ -4,12 +4,13 @@ import sbt._ import Keys._ import de.heikoseeberger.sbtheader.HeaderPlugin import org.scalafmt.sbt.ScalafmtPlugin +import wartremover.WartRemover object ScalazPlugin extends AutoPlugin { override def trigger = allRequirements - override def requires = HeaderPlugin && ScalafmtPlugin + override def requires = HeaderPlugin && ScalafmtPlugin && WartRemover override def buildSettings = Compilation.buildSettings ++ @@ -25,5 +26,5 @@ object ScalazPlugin extends AutoPlugin { ) override def projectSettings = - Compilation.projectSettings + Compilation.projectSettings ++ WartRemoverSettings.buildSettings } diff --git a/src/main/scala/WartRemoverSettings.scala b/src/main/scala/WartRemoverSettings.scala new file mode 100644 index 0000000..07c4e05 --- /dev/null +++ b/src/main/scala/WartRemoverSettings.scala @@ -0,0 +1,12 @@ +package scalaz.build +import sbt.Keys._ +import sbt._ +import wartremover.WartRemover.autoImport.wartremoverErrors +import wartremover.Wart + +object WartRemoverSettings { + + val buildSettings = Seq( + wartremoverErrors in (Compile, compile) += Wart.Nothing + ) +} diff --git a/src/sbt-test/scalaz-sbt/wartremover/project/build.properties b/src/sbt-test/scalaz-sbt/wartremover/project/build.properties new file mode 100644 index 0000000..bf24547 --- /dev/null +++ b/src/sbt-test/scalaz-sbt/wartremover/project/build.properties @@ -0,0 +1 @@ +sbt.version=1.1.6 \ No newline at end of file diff --git a/src/sbt-test/scalaz-sbt/wartremover/project/test.sbt b/src/sbt-test/scalaz-sbt/wartremover/project/test.sbt new file mode 100644 index 0000000..d0af073 --- /dev/null +++ b/src/sbt-test/scalaz-sbt/wartremover/project/test.sbt @@ -0,0 +1,6 @@ +val pluginVersion = + sys.props + .get("plugin.version") + .getOrElse(sys.error("Sys prop plugin.version must be defined!")) + +addSbtPlugin("org.scalaz" % "scalaz-sbt" % pluginVersion) diff --git a/src/sbt-test/scalaz-sbt/wartremover/src/main/scala/Test.scala b/src/sbt-test/scalaz-sbt/wartremover/src/main/scala/Test.scala new file mode 100644 index 0000000..1352e81 --- /dev/null +++ b/src/sbt-test/scalaz-sbt/wartremover/src/main/scala/Test.scala @@ -0,0 +1,3 @@ +object Test { + def foo(a: String, b: Int): String = b + a +} diff --git a/src/sbt-test/scalaz-sbt/wartremover/test b/src/sbt-test/scalaz-sbt/wartremover/test new file mode 100644 index 0000000..765ec12 --- /dev/null +++ b/src/sbt-test/scalaz-sbt/wartremover/test @@ -0,0 +1,4 @@ +# Verify that the sbt-wartremover plugin is correctly activated + +> clean +-> compile diff --git a/src/sbt-test/scalaz-sbt/wartremover/test.sbt b/src/sbt-test/scalaz-sbt/wartremover/test.sbt new file mode 100644 index 0000000..1a5892b --- /dev/null +++ b/src/sbt-test/scalaz-sbt/wartremover/test.sbt @@ -0,0 +1,6 @@ +lazy val app = project + .in(file(".")) + .settings( + name := "wartremover", + wartremoverErrors in (Compile, compile) ++= Warts.all + ).enablePlugins(ScalazPlugin)