diff --git a/.scalafix.conf b/.scalafix.conf new file mode 100644 index 0000000000..868d5d363a --- /dev/null +++ b/.scalafix.conf @@ -0,0 +1,12 @@ +rules = [ + # ExplicitResultTypes, + # OrganizeImports, + # RemoveUnused, + DisableSyntax, + LeakingImplicitClassVal, + NoValInForComprehension, + # ProcedureSyntax, // Scala-2 only + // Need to preserve string-interpolation prefix for `s"..."` and `f"..."` for + // preservinng the code alignment + # RedundantSyntax +] diff --git a/airframe-di/src/main/scala/wvlet/airframe/Session.scala b/airframe-di/src/main/scala/wvlet/airframe/Session.scala index a4e3ab2fdb..e19b561b94 100644 --- a/airframe-di/src/main/scala/wvlet/airframe/Session.scala +++ b/airframe-di/src/main/scala/wvlet/airframe/Session.scala @@ -136,7 +136,7 @@ object Session extends LogSupport { * * @param session */ - implicit class SessionAccess(val session: Session) extends AnyVal { + implicit class SessionAccess(private val session: Session) extends AnyVal { def get[A](surface: Surface)(implicit sourceCode: SourceCode): A = session.get[A](surface)(sourceCode) def getOrElse[A](surface: Surface, obj: => A)(implicit sourceCode: SourceCode): A = session.getOrElse[A](surface, obj)(sourceCode) diff --git a/airframe-http-codegen/src/main/scala/wvlet/airframe/http/codegen/client/HttpClientGenerator.scala b/airframe-http-codegen/src/main/scala/wvlet/airframe/http/codegen/client/HttpClientGenerator.scala index b7b109c700..1f8d5b1840 100644 --- a/airframe-http-codegen/src/main/scala/wvlet/airframe/http/codegen/client/HttpClientGenerator.scala +++ b/airframe-http-codegen/src/main/scala/wvlet/airframe/http/codegen/client/HttpClientGenerator.scala @@ -43,7 +43,7 @@ object HttpClientGenerator extends LogSupport { } } - private[client] implicit class RichSurface(val s: Surface) extends AnyVal { + private[client] implicit class RichSurface(private val s: Surface) extends AnyVal { def fullTypeName: String = fullTypeNameOf(s) } diff --git a/airframe-http-grpc/src/main/scala/wvlet/airframe/http/grpc/GrpcContext.scala b/airframe-http-grpc/src/main/scala/wvlet/airframe/http/grpc/GrpcContext.scala index 4668abe9f5..c145b1e36b 100644 --- a/airframe-http-grpc/src/main/scala/wvlet/airframe/http/grpc/GrpcContext.scala +++ b/airframe-http-grpc/src/main/scala/wvlet/airframe/http/grpc/GrpcContext.scala @@ -35,7 +35,7 @@ object GrpcContext { private[grpc] val KEY_ACCEPT = Metadata.Key.of("accept", Metadata.ASCII_STRING_MARSHALLER) private[grpc] val KEY_CONTENT_TYPE = Metadata.Key.of("content-type", Metadata.ASCII_STRING_MARSHALLER) - private[grpc] implicit class RichMetadata(val m: Metadata) extends AnyVal { + private[grpc] implicit class RichMetadata(private val m: Metadata) extends AnyVal { def accept: String = Option(m.get(KEY_ACCEPT)).getOrElse(RPCEncoding.ApplicationMsgPack) def setAccept(s: String): Unit = { m.removeAll(KEY_ACCEPT) diff --git a/airframe-http-grpc/src/main/scala/wvlet/airframe/http/grpc/internal/GrpcServiceBuilder.scala b/airframe-http-grpc/src/main/scala/wvlet/airframe/http/grpc/internal/GrpcServiceBuilder.scala index ca15d180ee..5a1830c0f4 100644 --- a/airframe-http-grpc/src/main/scala/wvlet/airframe/http/grpc/internal/GrpcServiceBuilder.scala +++ b/airframe-http-grpc/src/main/scala/wvlet/airframe/http/grpc/internal/GrpcServiceBuilder.scala @@ -36,7 +36,7 @@ import java.util.concurrent.ExecutorService /** */ object GrpcServiceBuilder { - private implicit class RichMethod(val m: MethodSurface) extends AnyVal { + private implicit class RichMethod(private val m: MethodSurface) extends AnyVal { private def findClientStreamingArg: Option[MethodParameter] = { m.args.find(x => classOf[Rx[_]].isAssignableFrom(x.surface.rawType)) diff --git a/airframe-json/src/main/scala/wvlet/airframe/json/package.scala b/airframe-json/src/main/scala/wvlet/airframe/json/package.scala index 0589cf3926..005ddc834d 100644 --- a/airframe-json/src/main/scala/wvlet/airframe/json/package.scala +++ b/airframe-json/src/main/scala/wvlet/airframe/json/package.scala @@ -29,11 +29,11 @@ package object json { // Alias to encode msgpack into JSON strings with airframe-codec type Json = String - implicit class RichJson(val json: Json) extends AnyVal { + implicit class RichJson(private val json: Json) extends AnyVal { def toJSONValue: JSONValue = JSON.parseAny(json) } - implicit class JSONValueOps(val jsonValue: JSONValue) extends AnyVal { + implicit class JSONValueOps(private val jsonValue: JSONValue) extends AnyVal { def /(name: String): Seq[JSONValue] = { jsonValue match { case jsonObject: JSONObject => @@ -95,7 +95,7 @@ package object json { } } - implicit class JSONValueSeqOps(val jsonValues: Seq[JSONValue]) extends AnyVal { + implicit class JSONValueSeqOps(private val jsonValues: Seq[JSONValue]) extends AnyVal { def /(name: String): Seq[JSONValue] = { jsonValues.flatMap { jsonValue => jsonValue / name } } diff --git a/airframe-rx/src/main/scala/wvlet/airframe/rx/package.scala b/airframe-rx/src/main/scala/wvlet/airframe/rx/package.scala index e3dd0bc390..b8545e412f 100644 --- a/airframe-rx/src/main/scala/wvlet/airframe/rx/package.scala +++ b/airframe-rx/src/main/scala/wvlet/airframe/rx/package.scala @@ -17,7 +17,7 @@ import scala.concurrent.{ExecutionContext, Future} /** */ package object rx { - implicit class FutureConverter[A](val f: Future[A]) extends AnyVal { + implicit class FutureConverter[A](private val f: Future[A]) extends AnyVal { def toRx(implicit ec: ExecutionContext): RxOption[A] = Rx.fromFuture(f)(ec) } } diff --git a/project/plugin.sbt b/project/plugin.sbt index 2c812601d1..71fd69ee66 100755 --- a/project/plugin.sbt +++ b/project/plugin.sbt @@ -10,6 +10,9 @@ addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.2") addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.11.0") addSbtPlugin("org.jetbrains.scala" % "sbt-ide-settings" % "1.1.2") +// For auto-code rewrite +addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.11.1") + // For integration testing val SBT_AIRFRAME_VERSION = sys.env.getOrElse("SBT_AIRFRAME_VERSION", "23.11.3") addSbtPlugin("org.wvlet.airframe" % "sbt-airframe" % SBT_AIRFRAME_VERSION)