From 87aceccc72a6790d5fc2f842b27c7d9af36cfe95 Mon Sep 17 00:00:00 2001 From: vlad Date: Mon, 18 Jul 2016 17:23:03 -0400 Subject: Wart remover brought to core --- .gitignore | 2 +- project/Build.scala | 15 ++++++++++++++- project/plugins.sbt | 7 +++++++ project/sbt-ui.sbt | 3 --- src/main/scala/com/drivergrp/core/app.scala | 9 +++++---- src/main/scala/com/drivergrp/core/core.scala | 2 +- src/main/scala/com/drivergrp/core/messages.scala | 2 +- src/main/scala/com/drivergrp/core/rest.scala | 2 +- src/main/scala/com/drivergrp/core/time.scala | 9 ++++----- 9 files changed, 34 insertions(+), 17 deletions(-) delete mode 100644 project/sbt-ui.sbt diff --git a/.gitignore b/.gitignore index 4530652..ffa72aa 100644 --- a/.gitignore +++ b/.gitignore @@ -15,4 +15,4 @@ project/plugins/project/ # Scala-IDE specific .scala_dependencies .worksheet -.idea \ No newline at end of file +.idea/ \ No newline at end of file diff --git a/project/Build.scala b/project/Build.scala index 60eef38..0e39ce3 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -1,7 +1,19 @@ import sbt._ import Keys._ +import org.scalafmt.sbt.ScalaFmtPlugin.autoImport.scalafmtConfig +import wartremover._ +import wartremover.WartRemover.autoImport.wartremoverErrors + + object BuildSettings { + + val wartRemoverSettings = Seq( + wartremoverErrors in (Compile, compile) ++= Warts.allBut( + Wart.AsInstanceOf, Wart.Nothing, Wart.Option2Iterable, Wart.ExplicitImplicitTypes, + Wart.Overloading, Wart.DefaultArguments, Wart.ToString, Wart.Any, Wart.Throw) + ) + val buildSettings = Defaults.coreDefaultSettings ++ Seq ( organization := "com.drivergrp", name := "core", @@ -10,8 +22,9 @@ object BuildSettings { scalacOptions := Seq("-unchecked", "-deprecation", "-feature", "-Xlint", "-encoding", "utf8", "-language:higherKinds", "-language:implicitConversions", "-language:postfixOps", "-Ywarn-infer-any", "-Ywarn-unused", "-Ywarn-unused-import"), + scalafmtConfig := Some(file(".scalafmt")), fork in run := true - ) + ) ++ wartRemoverSettings } object DriverBuild extends Build { diff --git a/project/plugins.sbt b/project/plugins.sbt index e69de29..ee760ea 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -0,0 +1,7 @@ +// Code style plugins +addSbtPlugin("com.geirsson" % "sbt-scalafmt" % "0.2.10") +addSbtPlugin("org.wartremover" % "sbt-wartremover" % "1.0.1") +addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "0.8.0") + +// This plugin represents functionality that is to be added to sbt in the future +addSbtPlugin("org.scala-sbt" % "sbt-core-next" % "0.1.1") \ No newline at end of file diff --git a/project/sbt-ui.sbt b/project/sbt-ui.sbt deleted file mode 100644 index 7c28b97..0000000 --- a/project/sbt-ui.sbt +++ /dev/null @@ -1,3 +0,0 @@ -// This plugin represents functionality that is to be added to sbt in the future - -addSbtPlugin("org.scala-sbt" % "sbt-core-next" % "0.1.1") \ No newline at end of file diff --git a/src/main/scala/com/drivergrp/core/app.scala b/src/main/scala/com/drivergrp/core/app.scala index 06d8e02..cae3c6b 100644 --- a/src/main/scala/com/drivergrp/core/app.scala +++ b/src/main/scala/com/drivergrp/core/app.scala @@ -44,9 +44,10 @@ object app { def stop() = { http.shutdownAllConnectionPools().onComplete { _ => - actorSystem.terminate() - Await.result(actorSystem.whenTerminated, 30.seconds) - Console.print(s"${this.getClass.getName} App is stopped") + val _ = actorSystem.terminate() + val terminated = Await.result(actorSystem.whenTerminated, 30.seconds) + val addressTerminated = if(terminated.addressTerminated) "is" else "is not" + Console.print(s"${this.getClass.getName} App $addressTerminated stopped ") } } @@ -66,7 +67,7 @@ object app { )) } - http.bindAndHandle( + val _ = http.bindAndHandle( route2HandlerFlow(logRequestResult("log")( modules.map(_.route).foldLeft(versionRoute ~ swaggerRoutes) { _ ~ _ })), interface, port)(materializer) diff --git a/src/main/scala/com/drivergrp/core/core.scala b/src/main/scala/com/drivergrp/core/core.scala index 51459a7..bd6b698 100644 --- a/src/main/scala/com/drivergrp/core/core.scala +++ b/src/main/scala/com/drivergrp/core/core.scala @@ -20,7 +20,7 @@ package object core { } - trait Tagged[+V, +Tag] + private[core] trait Tagged[+V, +Tag] type @@[+V, +Tag] = V with Tagged[V, Tag] type Id[+Tag] = Long @@ Tag diff --git a/src/main/scala/com/drivergrp/core/messages.scala b/src/main/scala/com/drivergrp/core/messages.scala index bcc20d7..894a6ea 100644 --- a/src/main/scala/com/drivergrp/core/messages.scala +++ b/src/main/scala/com/drivergrp/core/messages.scala @@ -20,7 +20,7 @@ object messages { } } - case class Messages(map: Map[String, String], locale: Locale, log: Logger) { + final case class Messages(map: Map[String, String], locale: Locale, log: Logger) { /** * Returns message for the key diff --git a/src/main/scala/com/drivergrp/core/rest.scala b/src/main/scala/com/drivergrp/core/rest.scala index 4e8ea3e..0f730ba 100644 --- a/src/main/scala/com/drivergrp/core/rest.scala +++ b/src/main/scala/com/drivergrp/core/rest.scala @@ -156,7 +156,7 @@ object rest { config.getString("swagger.apiInfo.license"), config.getString("swagger.apiInfo.licenseUrl") )), - vendorExtensions = Map()) + vendorExtensions = Map.empty[String, AnyRef]) def swaggerUI = get { pathPrefix("") { diff --git a/src/main/scala/com/drivergrp/core/time.scala b/src/main/scala/com/drivergrp/core/time.scala index 2502a70..074e99d 100644 --- a/src/main/scala/com/drivergrp/core/time.scala +++ b/src/main/scala/com/drivergrp/core/time.scala @@ -21,7 +21,7 @@ object time { val Weeks = Week - case class Time(millis: Long) extends AnyVal { + final case class Time(millis: Long) extends AnyVal { def isBefore(anotherTime: Time): Boolean = millis < anotherTime.millis @@ -30,17 +30,16 @@ object time { def advanceBy(duration: Duration): Time = Time(millis + duration.length) } - case class TimeRange(start: Time, end: Time) + final case class TimeRange(start: Time, end: Time) implicit def timeOrdering: Ordering[Time] = Ordering.by(_.millis) def startOfMonth(time: Time) = { - make(new GregorianCalendar()) { cal => + Time(make(new GregorianCalendar()) { cal => cal.setTime(new Date(time.millis)) cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH)) - Time(cal.getTime.getTime) - } + }.getTime.getTime) } def textualDate(time: Time): String = -- cgit v1.2.3