From 4eea5cb24ce10b5087ab78d01e10ea785153f7d7 Mon Sep 17 00:00:00 2001 From: Michael Wizner Date: Tue, 28 Jul 2020 22:41:10 +0100 Subject: [PATCH] Reformat with the latest scalafmt. --- .scalafmt.conf | 4 +- src/main/scala/org/scalastyle/Checker.scala | 28 ++- .../scala/org/scalastyle/CommentFilter.scala | 13 +- src/main/scala/org/scalastyle/Directory.scala | 11 +- src/main/scala/org/scalastyle/Main.scala | 11 +- src/main/scala/org/scalastyle/Message.scala | 2 +- src/main/scala/org/scalastyle/Output.scala | 101 ++++----- .../scalastyle/ScalastyleConfiguration.scala | 107 +++++----- .../file/FileLineLengthChecker.scala | 4 +- .../org/scalastyle/file/FileTabChecker.scala | 4 +- .../file/HeaderMatchesChecker.scala | 8 +- .../scalastyle/file/IndentationChecker.scala | 20 +- .../org/scalastyle/file/RegexChecker.scala | 5 +- .../file/WhitespaceEndOfLineChecker.scala | 4 +- .../scalariform/AbstractClassChecker.scala | 4 +- .../scalariform/AbstractMethodChecker.scala | 50 ++--- .../AbstractSingleMethodChecker.scala | 51 ++--- .../scalariform/AbstractTokenChecker.scala | 2 +- .../scalariform/BlockImportChecker.scala | 57 ++--- .../scalastyle/scalariform/ClassChecker.scala | 3 +- .../scalariform/ClassNamesChecker.scala | 31 ++- .../scalariform/CurliesImportChecker.scala | 23 +- .../CyclomaticComplexityChecker.scala | 13 +- .../EmptyInterpolatedStringChecker.scala | 6 +- .../scalariform/ForBraceChecker.scala | 6 +- .../scalariform/ForLoopChecker.scala | 4 +- .../scalariform/IfBraceChecker.scala | 35 ++- .../scalariform/ImportsChecker.scala | 82 +++----- .../scalariform/JavaAnnotationChecker.scala | 4 +- .../LowercasePatternMatchChecker.scala | 4 +- .../scalariform/MagicNumberChecker.scala | 44 ++-- .../scalariform/MethodLengthChecker.scala | 28 ++- .../MultipleStringLiteralsChecker.scala | 5 +- .../scalariform/NamedArgumentChecker.scala | 5 +- .../NoWhitespaceBracketChecker.scala | 12 +- .../scalastyle/scalariform/NullChecker.scala | 4 +- .../scalariform/NumberOfTypesChecker.scala | 13 +- .../PublicMethodsHaveTypeChecker.scala | 4 +- .../scalariform/RedundantIfChecker.scala | 39 ++-- .../scalariform/ScalaDocChecker.scala | 199 +++++++++--------- .../SimplifyBooleanExpressionChecker.scala | 23 +- .../SpaceAfterCommentStartChecker.scala | 4 +- .../scalariform/SpaceAroundTokenChecker.scala | 17 +- .../scalariform/SpacesAfterPlusChecker.scala | 16 +- .../scalariform/SpacesBeforePlusChecker.scala | 10 +- .../scalastyle/scalariform/VarChecker.scala | 21 +- .../scalastyle/util/CreateRulesMarkdown.scala | 45 ++-- .../scala/org/scalastyle/OutputTest.scala | 5 +- .../file/HeaderMatchesCheckerTest.scala | 19 +- .../scalariform/ImportsCheckerTest.scala | 4 +- .../scalariform/ScalaDocCheckerTest.scala | 4 +- 51 files changed, 567 insertions(+), 651 deletions(-) diff --git a/.scalafmt.conf b/.scalafmt.conf index 43a30611..c7c6cd74 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,4 +1,3 @@ - version = "2.6.4" align = some align { @@ -17,10 +16,9 @@ align { assumeStandardLibraryStripMargin = true continuationIndent.defnSite = 2 continuationIndent.callSite = 2 -danglingParentheses = true docstrings = JavaDoc -indentOperator = spray maxColumn = 110 +newlines.implicitParamListModifierPrefer = before project { git = true excludeFilters = ["target"] diff --git a/src/main/scala/org/scalastyle/Checker.scala b/src/main/scala/org/scalastyle/Checker.scala index d9356508..243e6623 100644 --- a/src/main/scala/org/scalastyle/Checker.scala +++ b/src/main/scala/org/scalastyle/Checker.scala @@ -43,9 +43,8 @@ case class Lines(lines: Array[Line], lastChar: Char) { lines.foreach { l => i = i + 1 - if (position >= l.start && position < l.end) { + if (position >= l.start && position < l.end) return Some((l, i)) - } } None @@ -78,7 +77,7 @@ class ScalastyleChecker[T <: FileSpec](classLoader: Option[ClassLoader] = None) StartWork() :: files .flatMap(file => StartFile(file) :: checkerUtils.verifyFile(configuration, checks, file) ::: - List(EndFile(file)) + List(EndFile(file)) ) .toList ::: List(EndWork()) } @@ -131,17 +130,17 @@ class CheckerUtils(classLoader: Option[ClassLoader] = None) { file: T, source: String ): List[Message[T]] = { - if (source.isEmpty) { + if (source.isEmpty) Nil - } else { + else { val lines = Checker.parseLines(source) val scalariformAst = parseScalariform(source) - val commentFilters = if (configuration.commentFilter) { - CommentFilter.findCommentFilters(scalariformAst.comments, lines) - } else { - Nil - } + val commentFilters = + if (configuration.commentFilter) + CommentFilter.findCommentFilters(scalariformAst.comments, lines) + else + Nil classes .flatMap(cc => newInstance(cc.className, cc.level, cc.parameters, cc.customMessage, cc.customId)) @@ -188,13 +187,12 @@ class CheckerUtils(classLoader: Option[ClassLoader] = None) { def readFile(file: String, encoding: Option[String])(implicit codec: Codec): String = { @tailrec def readFileWithEncoding(file: String, encodings: List[String]): Option[String] = { - if (encodings.isEmpty) { + if (encodings.isEmpty) None - } else { + else { val encoding = encodings.head - try { - Some(Source.fromFile(file)(encoding).mkString) - } catch { + try Some(Source.fromFile(file)(encoding).mkString) + catch { case _: MalformedInputException => // printxxln("caught MalFormedInputException with " + (if (encoding.isDefined) encoding.get else "default (" + codec.charSet + ")") + " encoding") readFileWithEncoding(file, encodings.tail) diff --git a/src/main/scala/org/scalastyle/CommentFilter.scala b/src/main/scala/org/scalastyle/CommentFilter.scala index 4afb0b7d..9e8ba15b 100644 --- a/src/main/scala/org/scalastyle/CommentFilter.scala +++ b/src/main/scala/org/scalastyle/CommentFilter.scala @@ -67,24 +67,21 @@ object CommentFilter { it.foreach { ci => (inMap.getOrElse(ci.id, false), ci.off) match { - case (true, false) => { // off then on, add a new CommentFilter + case (true, false) => // off then on, add a new CommentFilter list += CommentFilter(ci.id, start.getOrElse(ci.id, None), lines.toLineColumn(ci.position)) inMap.put(ci.id, false) start.remove(ci.id) - } case (true, true) => // off then off, do nothing case (false, false) => // on then on, do nothing - case (false, true) => { // on then off, reset start + case (false, true) => // on then off, reset start start.put(ci.id, lines.toLineColumn(ci.position)) inMap.put(ci.id, true) - } } } inMap.foreach { e => - if (e._2) { + if (e._2) list += CommentFilter(e._1, start.getOrElse(e._1, None), None) - } } list.toList @@ -100,9 +97,9 @@ object CommentFilter { private def idMatches(key: String)(cf: CommentFilter) = cf.id.isEmpty || cf.id.get == key private def filterApplies[T <: FileSpec](se: StyleError[_])(cf: CommentFilter): Boolean = { - if (se.lineNumber.isEmpty) { + if (se.lineNumber.isEmpty) true - } else { + else { val m = se.lineNumber.get (cf.start, cf.end) match { case (Some(s), Some(e)) => m >= s.line && m < e.line diff --git a/src/main/scala/org/scalastyle/Directory.scala b/src/main/scala/org/scalastyle/Directory.scala index df6ee7f8..bd2e9fee 100644 --- a/src/main/scala/org/scalastyle/Directory.scala +++ b/src/main/scala/org/scalastyle/Directory.scala @@ -46,9 +46,9 @@ object Directory { } private[this] def createFileExclusionFilter(excludedFiles: Seq[String]): Option[FileFilter] = { - if (excludedFiles.isEmpty) { + if (excludedFiles.isEmpty) None - } else { + else { val exclusionPatterns = excludedFiles.map(_.r) Some(new FileFilter { def accept(file: File): Boolean = { @@ -68,17 +68,16 @@ object Directory { def getFilesHelper(currentFiles: Iterable[File], acc: Set[File]): Set[File] = { currentFiles.headOption match { case Some(f) => - if (excludeFilter.exists(_.accept(f))) { + if (excludeFilter.exists(_.accept(f))) getFilesHelper(currentFiles.tail, acc) - } else if (f.isDirectory) { + else if (f.isDirectory) { val newCurrentFiles = currentFiles.tail ++ f.listFiles getFilesHelper(newCurrentFiles, acc) } else if (scalaFileFilter.accept(f) && !acc(f)) { val newAcc = acc + f getFilesHelper(currentFiles.tail, newAcc) - } else { + } else getFilesHelper(currentFiles.tail, acc) - } case None => acc } } diff --git a/src/main/scala/org/scalastyle/Main.scala b/src/main/scala/org/scalastyle/Main.scala index 9b770dce..06fd798c 100644 --- a/src/main/scala/org/scalastyle/Main.scala +++ b/src/main/scala/org/scalastyle/Main.scala @@ -85,9 +85,8 @@ object Main { } } - if (config.config.isEmpty || config.directories.isEmpty) { + if (config.config.isEmpty || config.directories.isEmpty) config = config.copy(error = true) - } config } @@ -100,9 +99,8 @@ object Main { if (config.error) { usage(BuildInfo.version) 1 - } else { - if (execute(config)) 1 else 0 - } + } else if (execute(config)) 1 + else 0 } System.exit(exitVal) @@ -122,10 +120,9 @@ object Main { val config = ConfigFactory.load(cl.getOrElse(this.getClass.getClassLoader)) val outputResult = new TextOutput(config, mc.verbose, mc.quiet).output(messages) mc.xmlFile match { - case Some(x) => { + case Some(x) => val encoding = mc.xmlEncoding.getOrElse(codec.charSet).toString XmlOutput.save(config, x, encoding, messages) - } case None => } diff --git a/src/main/scala/org/scalastyle/Message.scala b/src/main/scala/org/scalastyle/Message.scala index cb082535..79627125 100644 --- a/src/main/scala/org/scalastyle/Message.scala +++ b/src/main/scala/org/scalastyle/Message.scala @@ -72,7 +72,7 @@ case class StyleError[+T <: FileSpec]( ) extends Message[T] { override def toString(): String = "StyleError key=" + key + " args=" + args + " lineNumber=" + lineNumber + - " column=" + column + " customMessage=" + customMessage + " column=" + column + " customMessage=" + customMessage } case class StyleException[+T <: FileSpec]( fileSpec: T, diff --git a/src/main/scala/org/scalastyle/Output.scala b/src/main/scala/org/scalastyle/Output.scala index 757b3148..047036da 100755 --- a/src/main/scala/org/scalastyle/Output.scala +++ b/src/main/scala/org/scalastyle/Output.scala @@ -50,19 +50,20 @@ trait Output[T <: FileSpec] { OutputResult(files, errors, warnings, infos) } - def eachMessage(m: Message[T]): Unit = m match { - case StartWork() => - case EndWork() => - case StartFile(file) => files += 1 - case EndFile(file) => - case StyleError(file, clazz, key, level, args, line, column, customMessage) => - level match { - case WarningLevel => warnings += 1 - case InfoLevel => infos += 1 - case _ => errors += 1 - } - case StyleException(file, clazz, message, stacktrace, line, column) => errors += 1 - } + def eachMessage(m: Message[T]): Unit = + m match { + case StartWork() => + case EndWork() => + case StartFile(file) => files += 1 + case EndFile(file) => + case StyleError(file, clazz, key, level, args, line, column, customMessage) => + level match { + case WarningLevel => warnings += 1 + case InfoLevel => infos += 1 + case _ => errors += 1 + } + case StyleException(file, clazz, message, stacktrace, line, column) => errors += 1 + } def message(m: Message[T]): Unit } @@ -74,29 +75,30 @@ class TextOutput[T <: FileSpec](config: Config, verbose: Boolean = false, quiet: private val messageHelper = new MessageHelper(config) // scalastyle:off regex multiple.string.literals - override def message(m: Message[T]): Unit = m match { - case StartWork() => if (verbose) println("Starting scalastyle") - case EndWork() => - case StartFile(file) => if (verbose) println("start file " + file) - case EndFile(file) => if (verbose) println("end file " + file) - case StyleError(file, clazz, key, level, args, line, column, customMessage) => - if (!quiet || verbose) { - println( - messageHelper.text(level.name) + print("file", file.name) + - print("message", Output.findMessage(messageHelper, key, args, customMessage)) + - print("line", line) + print("column", column) - ) - } - case StyleException(file, clazz, message, stacktrace, line, column) => - if (!quiet || verbose) { - println( - "error" + print("file", file.name) + print("message", message) + print("line", line) + print( - "column", - column + override def message(m: Message[T]): Unit = + m match { + case StartWork() => if (verbose) println("Starting scalastyle") + case EndWork() => + case StartFile(file) => if (verbose) println("start file " + file) + case EndFile(file) => if (verbose) println("end file " + file) + case StyleError(file, clazz, key, level, args, line, column, customMessage) => + if (!quiet || verbose) { + println( + messageHelper.text(level.name) + print("file", file.name) + + print("message", Output.findMessage(messageHelper, key, args, customMessage)) + + print("line", line) + print("column", column) ) - ) - } - } + } + case StyleException(file, clazz, message, stacktrace, line, column) => + if (!quiet || verbose) { + println( + "error" + print("file", file.name) + print("message", message) + print("line", line) + print( + "column", + column + ) + ) + } + } // scalastyle:on regex @@ -137,18 +139,14 @@ object XmlOutput { private def printToFile(f: java.io.File, encoding: String)(op: java.io.PrintWriter => Unit): Unit = { val parent = f.getParentFile // sometimes f.getParentFile returns null - don't know why, but protect anyway - if (parent != null && !parent.exists() && !parent.mkdirs()) { // scalastyle:ignore null + if (parent != null && !parent.exists() && !parent.mkdirs()) // scalastyle:ignore null throw new IllegalStateException("Couldn't create dir: " + parent) - } val p = new java.io.PrintWriter(f, encoding) - try { - op(p) - } catch { + try op(p) + catch { case e: Throwable => throw e - } finally { - p.close() - } + } finally p.close() } case class Alert( @@ -188,15 +186,17 @@ object XmlOutput { { alerts.map { - case Alert(fn, severity, message, source, line, column) => { + case Alert(fn, severity, message, source, line, column) => val s = source.collect { case x: Class[_] => x.getName } - % attr("source", s) % attr("line", line) % attr( + % attr("source", s) % attr( + "line", + line + ) % attr( "column", column ) - } } } @@ -205,8 +205,9 @@ object XmlOutput { } - private[this] def attr(name: String, value: Option[Any]): xml.MetaData = value match { - case Some(x) => xml.Attribute("", name, x.toString, xml.Null) - case None => xml.Null - } + private[this] def attr(name: String, value: Option[Any]): xml.MetaData = + value match { + case Some(x) => xml.Attribute("", name, x.toString, xml.Null) + case None => xml.Null + } } diff --git a/src/main/scala/org/scalastyle/ScalastyleConfiguration.scala b/src/main/scala/org/scalastyle/ScalastyleConfiguration.scala index e38e71d7..37644537 100644 --- a/src/main/scala/org/scalastyle/ScalastyleConfiguration.scala +++ b/src/main/scala/org/scalastyle/ScalastyleConfiguration.scala @@ -39,12 +39,13 @@ object Level { val Error = "error" val Info = "info" - def apply(s: String): Level = s match { - case Warning => WarningLevel - case Error => ErrorLevel - case Info => InfoLevel - case _ => WarningLevel - } + def apply(s: String): Level = + s match { + case Warning => WarningLevel + case Error => ErrorLevel + case Info => InfoLevel + case _ => WarningLevel + } } sealed abstract class Level(val name: String) case object ErrorLevel extends Level(Level.Error) @@ -56,12 +57,13 @@ object ParameterType { val String = "string" val Boolean = "boolean" - def apply(s: String): ParameterType = s match { - case Integer => IntegerType - case String => StringType - case Boolean => BooleanType - case _ => StringType - } + def apply(s: String): ParameterType = + s match { + case Integer => IntegerType + case String => StringType + case Boolean => BooleanType + case _ => StringType + } } sealed abstract class ParameterType(val name: String) case object IntegerType extends ParameterType(ParameterType.Integer) @@ -140,14 +142,12 @@ object ScalastyleConfiguration { {text} } {ps} - } else { + } else scala.xml.Null - } val customMessage = c.customMessage match { - case Some(s) => { + case Some(s) => val text = toCDATA(s) {text} - } case None => scala.xml.Null } val check = { @@ -240,43 +240,44 @@ class XmlPrettyPrinter(width: Int, step: Int) extends PrettyPrinter(width, step) // This is just a copy of what's in scala.xml.PrettyPrinter /** @param tail: what we'd like to squeeze in */ - protected override def traverse(node: Node, pscope: NamespaceBinding, ind: Int): Unit = node match { - - case Text(s) if s.trim() == "" => - ; - case _: Atom[_] | _: Comment | _: EntityRef | _: ProcInstr => - makeBox(ind, node.toString().trim()) - case g @ Group(xs) => - traverse(xs.iterator, pscope, ind) - case _ => - val test = { - val sb = new StringBuilder() - Utility.serialize(node, pscope, sb, false, minimizeTags = MinimizeMode.Default) - if (doPreserve(node)) sb.toString else TextBuffer.fromString(sb.toString()).toText(0).data - } - if (childrenAreLeaves(node) && fits(test)) { - makeBox(ind, test) - } else { - val (stg, len2) = startTag(node, pscope) - val etg = endTag(node) - if (stg.length < width - cur) { // start tag fits - makeBox(ind, stg) - makeBreak() - traverse(node.child.iterator, node.scope, ind + step) - makeBox(ind, etg) - } else if (len2 < width - cur) { - // + ; + case _: Atom[_] | _: Comment | _: EntityRef | _: ProcInstr => + makeBox(ind, node.toString().trim()) + case g @ Group(xs) => + traverse(xs.iterator, pscope, ind) + case _ => + val test = { + val sb = new StringBuilder() + Utility.serialize(node, pscope, sb, false, minimizeTags = MinimizeMode.Default) + if (doPreserve(node)) sb.toString else TextBuffer.fromString(sb.toString()).toText(0).data + } + if (childrenAreLeaves(node) && fits(test)) makeBox(ind, test) - makeBreak() + else { + val (stg, len2) = startTag(node, pscope) + val etg = endTag(node) + if (stg.length < width - cur) { // start tag fits + makeBox(ind, stg) + makeBreak() + traverse(node.child.iterator, node.scope, ind + step) + makeBox(ind, etg) + } else if (len2 < width - cur) { + // maxLineLength && !(ignoreImports && importPattern.findFirstIn(line.body).isDefined) - } yield { - line.mkError(List("" + maxLineLength)) - } + } yield line.mkError(List("" + maxLineLength)) errors.toList } diff --git a/src/main/scala/org/scalastyle/file/FileTabChecker.scala b/src/main/scala/org/scalastyle/file/FileTabChecker.scala index 834ad2d4..bebc0012 100644 --- a/src/main/scala/org/scalastyle/file/FileTabChecker.scala +++ b/src/main/scala/org/scalastyle/file/FileTabChecker.scala @@ -28,9 +28,7 @@ class FileTabChecker extends FileChecker { val errors = for { line <- lines.lines.zipWithIndex if line._1.text.contains('\t') - } yield { - ColumnError(line._2 + 1, line._1.text.indexOf('\t')) - } + } yield ColumnError(line._2 + 1, line._1.text.indexOf('\t')) errors.toList } diff --git a/src/main/scala/org/scalastyle/file/HeaderMatchesChecker.scala b/src/main/scala/org/scalastyle/file/HeaderMatchesChecker.scala index fe900303..75311445 100644 --- a/src/main/scala/org/scalastyle/file/HeaderMatchesChecker.scala +++ b/src/main/scala/org/scalastyle/file/HeaderMatchesChecker.scala @@ -49,13 +49,11 @@ class HeaderMatchesChecker extends FileChecker { found match { case Some(x) => List(LineError(x + 1)) - case None => { - if (ast.lines.size < header.lines.length) { + case None => + if (ast.lines.size < header.lines.length) List(LineError(ast.lines.length)) - } else { + else List() - } - } } } } diff --git a/src/main/scala/org/scalastyle/file/IndentationChecker.scala b/src/main/scala/org/scalastyle/file/IndentationChecker.scala index 54757b14..3f96945c 100644 --- a/src/main/scala/org/scalastyle/file/IndentationChecker.scala +++ b/src/main/scala/org/scalastyle/file/IndentationChecker.scala @@ -25,8 +25,8 @@ import org.scalastyle.ScalastyleError object NormalizedLine { def normalize(lines: Lines, tabSize: Int): Array[NormalizedLine] = lines.lines.zipWithIndex map { - case (line, index) => NormalizedLine(index + 1, line, tabSize) - } + case (line, index) => NormalizedLine(index + 1, line, tabSize) + } } case class NormalizedLine(lineNumber: Int, line: Line, tabSize: Int) { @@ -51,15 +51,13 @@ case class NormalizedLine(lineNumber: Int, line: Line, tabSize: Int) { var i = 0 while (i < len) { - if (sb.charAt(i) == '\t') { + if (sb.charAt(i) == '\t') sb.replace(i, i + 1, spaces(i, tabSize)) - } i += 1 } - if (sb.endsWith("\r")) { + if (sb.endsWith("\r")) sb.setLength(sb.length - 1) - } sb.toString } @@ -102,11 +100,10 @@ class IndentationChecker extends FileChecker { */ private def verifyClassIndent(lines: Seq[NormalizedLine], classParamIndentSize: Int) = { def isInvalid(l1: NormalizedLine, l2: NormalizedLine): Boolean = { - if (startsParamList(l1) && !l1.normalizedText.contains(" extends ")) { + if (startsParamList(l1) && !l1.normalizedText.contains(" extends ")) (l2.indentDepth - l1.indentDepth) != classParamIndentSize - } else { + else false - } } for { Seq(l1, l2) <- lines.sliding(2) if isInvalid(l1, l2) } yield l2.mkError() @@ -117,11 +114,10 @@ class IndentationChecker extends FileChecker { */ private def verifyMethodIndent(lines: Seq[NormalizedLine], methodParamIndentSize: Int) = { def isInvalid(l1: NormalizedLine, l2: NormalizedLine): Boolean = { - if (startsMethodDef(l1)) { + if (startsMethodDef(l1)) (l2.indentDepth - l1.indentDepth) != methodParamIndentSize - } else { + else false - } } for { Seq(l1, l2) <- lines.sliding(2) if isInvalid(l1, l2) } yield l2.mkError() diff --git a/src/main/scala/org/scalastyle/file/RegexChecker.scala b/src/main/scala/org/scalastyle/file/RegexChecker.scala index 8c89d99f..fab3987b 100644 --- a/src/main/scala/org/scalastyle/file/RegexChecker.scala +++ b/src/main/scala/org/scalastyle/file/RegexChecker.scala @@ -71,11 +71,10 @@ class RegexChecker extends FileChecker { while (!found) { val currentLine = lines.lines(line) - if (location >= currentLine.start && location < currentLine.end) { + if (location >= currentLine.start && location < currentLine.end) found = true - } else { + else line += 1 - } } line diff --git a/src/main/scala/org/scalastyle/file/WhitespaceEndOfLineChecker.scala b/src/main/scala/org/scalastyle/file/WhitespaceEndOfLineChecker.scala index 4cd74c93..eb1e4083 100644 --- a/src/main/scala/org/scalastyle/file/WhitespaceEndOfLineChecker.scala +++ b/src/main/scala/org/scalastyle/file/WhitespaceEndOfLineChecker.scala @@ -61,9 +61,7 @@ class WhitespaceEndOfLineChecker extends FileChecker { (hasWhitespace, whitespaceIndex) = endsWithWhitespace(line.text) if hasWhitespace if !ignoreWhitespaceLines || line.text.trim.nonEmpty - } yield { - ColumnError(lineIndex + 1, whitespaceIndex) - } + } yield ColumnError(lineIndex + 1, whitespaceIndex) errors.toList } diff --git a/src/main/scala/org/scalastyle/scalariform/AbstractClassChecker.scala b/src/main/scala/org/scalastyle/scalariform/AbstractClassChecker.scala index eb4c787d..4fe0f23f 100644 --- a/src/main/scala/org/scalastyle/scalariform/AbstractClassChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/AbstractClassChecker.scala @@ -32,9 +32,7 @@ abstract class AbstractClassChecker extends ScalariformChecker { val it = for { f <- visit[TmplDef, TmplClazz](map)(ast.immediateChildren.head) t <- traverse(f, matches) - } yield { - PositionError(t.t.name.offset) - } + } yield PositionError(t.t.name.offset) it } diff --git a/src/main/scala/org/scalastyle/scalariform/AbstractMethodChecker.scala b/src/main/scala/org/scalastyle/scalariform/AbstractMethodChecker.scala index bbb5abb1..8b86a8a7 100644 --- a/src/main/scala/org/scalastyle/scalariform/AbstractMethodChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/AbstractMethodChecker.scala @@ -62,24 +62,24 @@ object VisitorHelper { myVisit[T, X](manifest.runtimeClass.asInstanceOf[Class[T]], fn)(ast) private[this] def myVisit[T <: AstNode, X](clazz: Class[T], fn: T => List[X])(ast: Any): List[X] = { - if (ast.getClass.equals(clazz)) { + if (ast.getClass.equals(clazz)) fn(ast.asInstanceOf[T]) ::: visit(ast, myVisit(clazz, fn)) - } else { + else visit(ast, myVisit(clazz, fn)) - } } - protected[scalariform] def visit[T](ast: Any, visitfn: (Any) => List[T]): List[T] = ast match { - case a: AstNode => visitfn(a.immediateChildren) - case t: Token => List() - case Some(x) => visitfn(x) - case xs @ (_ :: _) => xs.flatMap(visitfn(_)) - case Left(x) => visitfn(x) - case Right(x) => visitfn(x) - case (l, r) => visitfn(l) ::: visitfn(r) - case (x, y, z) => visitfn(x) ::: visitfn(y) ::: visitfn(z) - case true | false | Nil | None => List() - } + protected[scalariform] def visit[T](ast: Any, visitfn: (Any) => List[T]): List[T] = + ast match { + case a: AstNode => visitfn(a.immediateChildren) + case t: Token => List() + case Some(x) => visitfn(x) + case xs @ (_ :: _) => xs.flatMap(visitfn(_)) + case Left(x) => visitfn(x) + case Right(x) => visitfn(x) + case (l, r) => visitfn(l) ::: visitfn(r) + case (x, y, z) => visitfn(x) ::: visitfn(y) ::: visitfn(z) + case true | false | Nil | None => List() + } } abstract class AbstractMethodChecker extends ScalariformChecker { @@ -102,9 +102,7 @@ abstract class AbstractMethodChecker extends ScalariformChecker { t <- localvisit(ast.immediateChildren.head) f <- traverse(t) if matches(f) - } yield { - PositionError(f.position.get, params(f)) - } + } yield PositionError(f.position.get, params(f)) it.toList } @@ -124,18 +122,20 @@ abstract class AbstractMethodChecker extends ScalariformChecker { protected def typename(t: Type): String = t.tokens.map(_.text).mkString - private def localvisit(ast: Any): ListType = ast match { - case t: TmplDef => List(TmplClazz(t, Some(t.name.offset), localvisit(t.templateBodyOption))) - case t: FunDefOrDcl => List(FunDefOrDclClazz(t, Some(t.nameToken.offset), localvisit(t.localDef))) - case t: Any => visit(t, localvisit) - } + private def localvisit(ast: Any): ListType = + ast match { + case t: TmplDef => List(TmplClazz(t, Some(t.name.offset), localvisit(t.templateBodyOption))) + case t: FunDefOrDcl => List(FunDefOrDclClazz(t, Some(t.nameToken.offset), localvisit(t.localDef))) + case t: Any => visit(t, localvisit) + } protected def getParamTypes(pc: ParamClauses): List[String] = getParams(pc).map(p => typename(p.paramTypeOpt.get._2)) - protected def matchFunDefOrDcl(t: BaseClazz[AstNode], fn: FunDefOrDcl => Boolean): Boolean = t match { - case f: FunDefOrDclClazz => fn(f.t); case _ => false - } + protected def matchFunDefOrDcl(t: BaseClazz[AstNode], fn: FunDefOrDcl => Boolean): Boolean = + t match { + case f: FunDefOrDclClazz => fn(f.t); case _ => false + } protected def methodMatch(name: String, paramTypesMatch: List[String] => Boolean)(t: FunDefOrDcl): Boolean = t.nameToken.text == name && paramTypesMatch(getParamTypes(t.paramClauses)) diff --git a/src/main/scala/org/scalastyle/scalariform/AbstractSingleMethodChecker.scala b/src/main/scala/org/scalastyle/scalariform/AbstractSingleMethodChecker.scala index d72c851a..8dbdf5af 100644 --- a/src/main/scala/org/scalastyle/scalariform/AbstractSingleMethodChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/AbstractSingleMethodChecker.scala @@ -47,9 +47,7 @@ abstract class AbstractSingleMethodChecker[T] extends ScalariformChecker { t <- localvisit(insideDefOrValOrVar = false)(ast.immediateChildren.head) f <- traverse(t) if matches(f, p) - } yield { - PositionError(f.funDefOrDcl.nameToken.offset, describeParameters(p)) - } + } yield PositionError(f.funDefOrDcl.nameToken.offset, describeParameters(p)) it } @@ -60,30 +58,33 @@ abstract class AbstractSingleMethodChecker[T] extends ScalariformChecker { protected def matches(t: FullDefOrDclVisit, parameters: T): Boolean protected def describeParameters(parameters: T): List[String] = Nil - private def localvisit(insideDefOrValOrVar: Boolean)(ast: Any): List[FullDefOrDclVisit] = ast match { - case t: FullDefOrDcl => { - t.defOrDcl match { - case f: FunDefOrDcl => List(FullDefOrDclVisit(t, f, localvisit(true)(f), insideDefOrValOrVar)) - case f: PatDefOrDcl => localvisit(true)(f.equalsClauseOption) - case _ => localvisit(insideDefOrValOrVar)(t.defOrDcl) - } + private def localvisit(insideDefOrValOrVar: Boolean)(ast: Any): List[FullDefOrDclVisit] = + ast match { + case t: FullDefOrDcl => + t.defOrDcl match { + case f: FunDefOrDcl => List(FullDefOrDclVisit(t, f, localvisit(true)(f), insideDefOrValOrVar)) + case f: PatDefOrDcl => localvisit(true)(f.equalsClauseOption) + case _ => localvisit(insideDefOrValOrVar)(t.defOrDcl) + } + case t: FunDefOrDcl => localvisit(true)(t.funBodyOpt) + case t: Any => visit(t, localvisit(insideDefOrValOrVar)) } - case t: FunDefOrDcl => localvisit(true)(t.funBodyOpt) - case t: Any => visit(t, localvisit(insideDefOrValOrVar)) - } - protected def isOverride(modifiers: List[Modifier]) = modifiers.exists { - case sm: SimpleModifier if sm.token.text == "override" => true - case _ => false - } + protected def isOverride(modifiers: List[Modifier]) = + modifiers.exists { + case sm: SimpleModifier if sm.token.text == "override" => true + case _ => false + } - protected def privateOrProtected(modifiers: List[Modifier]) = modifiers.exists { - case am: AccessModifier => true - case _ => false - } + protected def privateOrProtected(modifiers: List[Modifier]) = + modifiers.exists { + case am: AccessModifier => true + case _ => false + } - protected def isConstructor(defOrDcl: DefOrDcl) = defOrDcl match { - case fun: FunDefOrDcl => fun.nameToken.tokenType == Tokens.THIS - case _ => false - } + protected def isConstructor(defOrDcl: DefOrDcl) = + defOrDcl match { + case fun: FunDefOrDcl => fun.nameToken.tokenType == Tokens.THIS + case _ => false + } } diff --git a/src/main/scala/org/scalastyle/scalariform/AbstractTokenChecker.scala b/src/main/scala/org/scalastyle/scalariform/AbstractTokenChecker.scala index 979f23e1..7139565e 100644 --- a/src/main/scala/org/scalastyle/scalariform/AbstractTokenChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/AbstractTokenChecker.scala @@ -20,9 +20,9 @@ import _root_.scalariform.lexer.Token import _root_.scalariform.lexer.TokenType import _root_.scalariform.lexer.Tokens.INTEGER_LITERAL import _root_.scalariform.lexer.Tokens.RETURN +import _root_.scalariform.lexer.Tokens.THROW import _root_.scalariform.lexer.Tokens.VARID import _root_.scalariform.lexer.Tokens.WHILE -import _root_.scalariform.lexer.Tokens.THROW import _root_.scalariform.parser.CompilationUnit import org.scalastyle.PositionError import org.scalastyle.ScalariformChecker diff --git a/src/main/scala/org/scalastyle/scalariform/BlockImportChecker.scala b/src/main/scala/org/scalastyle/scalariform/BlockImportChecker.scala index 7d6e1079..957a99b0 100644 --- a/src/main/scala/org/scalastyle/scalariform/BlockImportChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/BlockImportChecker.scala @@ -37,38 +37,39 @@ class BlockImportChecker extends ScalariformChecker { def verify(ast: CompilationUnit): List[ScalastyleError] = findBlockImports(ast) - private def findBlockImports(in: AstNode): List[PositionError] = in match { + private def findBlockImports(in: AstNode): List[PositionError] = + in match { - // comma separated import - case ImportClause(_, firstImport, otherImports, _) if otherImports.nonEmpty => - List(PositionError(firstImport.firstToken.offset)) + // comma separated import + case ImportClause(_, firstImport, otherImports, _) if otherImports.nonEmpty => + List(PositionError(firstImport.firstToken.offset)) - // rename or hide import - case BlockImportExpr( - prefix, - ImportSelectors( - _, - Expr( - List(_, GeneralTokens(List(Token(ARROW, "=>", _, _))), _) - ), - otherImports, - _ - ) - ) => - val blockImportFound = otherImports exists { - case (_, Expr(List(GeneralTokens(List(Token(tokenType, _, _, _)))))) => - tokenType != USCORE - case _ => - false - } + // rename or hide import + case BlockImportExpr( + prefix, + ImportSelectors( + _, + Expr( + List(_, GeneralTokens(List(Token(ARROW, "=>", _, _))), _) + ), + otherImports, + _ + ) + ) => + val blockImportFound = otherImports exists { + case (_, Expr(List(GeneralTokens(List(Token(tokenType, _, _, _)))))) => + tokenType != USCORE + case _ => + false + } - if (blockImportFound) List(PositionError(prefix.firstToken.offset)) else Nil + if (blockImportFound) List(PositionError(prefix.firstToken.offset)) else Nil - // other block imports - case b: BlockImportExpr => List(PositionError(b.firstToken.offset)) + // other block imports + case b: BlockImportExpr => List(PositionError(b.firstToken.offset)) - // remaining nodes - case a: AstNode => a.immediateChildren flatMap findBlockImports - } + // remaining nodes + case a: AstNode => a.immediateChildren flatMap findBlockImports + } } diff --git a/src/main/scala/org/scalastyle/scalariform/ClassChecker.scala b/src/main/scala/org/scalastyle/scalariform/ClassChecker.scala index 186760c9..147d5381 100644 --- a/src/main/scala/org/scalastyle/scalariform/ClassChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/ClassChecker.scala @@ -60,7 +60,7 @@ class ClassTypeParameterChecker extends AbstractClassChecker { private[this] def innermostName(ast: Any): Option[String] = { ast match { - case typeParam: TypeParam => { + case typeParam: TypeParam => typeParam.contents match { case List(GeneralTokens(list)) => Some(list.head.text) case List(GeneralTokens(list), TypeParamClause(x)) => innermostName(x(1)) @@ -69,7 +69,6 @@ class ClassTypeParameterChecker extends AbstractClassChecker { case VarianceTypeElement(_) :: GeneralTokens(list) :: tail => Some(list.head.text) case _ => None } - } case _ => None } } diff --git a/src/main/scala/org/scalastyle/scalariform/ClassNamesChecker.scala b/src/main/scala/org/scalastyle/scalariform/ClassNamesChecker.scala index ee920f0a..e8cfbbd3 100644 --- a/src/main/scala/org/scalastyle/scalariform/ClassNamesChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/ClassNamesChecker.scala @@ -53,9 +53,7 @@ class ClassNamesChecker extends ScalariformChecker { val it = for { List(left, right) <- ast.tokens.sliding(2) if left.tokenType == CLASS && regex.findAllIn(right.text).isEmpty - } yield { - PositionError(right.offset, List(regexString)) - } + } yield PositionError(right.offset, List(regexString)) it.toList } @@ -72,9 +70,7 @@ class ObjectNamesChecker extends ScalariformChecker { val it = for { List(left, middle, right) <- ast.tokens.sliding(3) if left.tokenType != PACKAGE && middle.tokenType == OBJECT && regex.findAllIn(right.text).isEmpty - } yield { - PositionError(right.offset, List(regexString)) - } + } yield PositionError(right.offset, List(regexString)) it.toList } @@ -91,11 +87,12 @@ class PackageNamesChecker extends ScalariformChecker { def isPartOfPackageName(t: Token): Boolean = (t.tokenType == DOT) || (t.tokenType == VARID) @annotation.tailrec - def getNextPackageName(tokens: List[Token]): (List[Token], List[Token]) = tokens match { - case Nil => (Nil, Nil) - case hd :: tail if hd.tokenType == PACKAGE => tail.span(isPartOfPackageName) - case l: Any => getNextPackageName(l.dropWhile(tok => tok.tokenType != PACKAGE)) - } + def getNextPackageName(tokens: List[Token]): (List[Token], List[Token]) = + tokens match { + case Nil => (Nil, Nil) + case hd :: tail if hd.tokenType == PACKAGE => tail.span(isPartOfPackageName) + case l: Any => getNextPackageName(l.dropWhile(tok => tok.tokenType != PACKAGE)) + } @annotation.tailrec def getPackageNameLoop(tokens: List[Token], myAccumulator: List[List[Token]]): List[List[Token]] = @@ -113,9 +110,7 @@ class PackageNamesChecker extends ScalariformChecker { val it = for { pkgName <- packageNames.flatten if regex.findAllIn(pkgName.text).isEmpty - } yield { - PositionError(pkgName.offset, List(regexString)) - } + } yield PositionError(pkgName.offset, List(regexString)) it } @@ -132,9 +127,7 @@ class PackageObjectNamesChecker extends ScalariformChecker { val it = for { List(left, middle, right) <- ast.tokens.sliding(3) if left.tokenType == PACKAGE && middle.tokenType == OBJECT && regex.findAllIn(right.text).isEmpty - } yield { - PositionError(right.offset, List(regexString)) - } + } yield PositionError(right.offset, List(regexString)) it.toList } @@ -174,9 +167,9 @@ class MethodNamesChecker extends AbstractSingleMethodChecker[MethodNamesCheckerP ) protected def matches(t: FullDefOrDclVisit, p: MethodNamesCheckerParameters): Boolean = { - if (p.ignoreOverride && isOverride(t.fullDefOrDcl.modifiers)) { + if (p.ignoreOverride && isOverride(t.fullDefOrDcl.modifiers)) false - } else { + else { val name = t.funDefOrDcl.nameToken.text !matches(p.regex(), name) && !matches(p.ignoreRegex(), name) } diff --git a/src/main/scala/org/scalastyle/scalariform/CurliesImportChecker.scala b/src/main/scala/org/scalastyle/scalariform/CurliesImportChecker.scala index 5642d757..028b29a2 100644 --- a/src/main/scala/org/scalastyle/scalariform/CurliesImportChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/CurliesImportChecker.scala @@ -31,16 +31,17 @@ class CurliesImportChecker extends ScalariformChecker { def verify(ast: CompilationUnit): List[ScalastyleError] = findBlockImports(ast) - private def findBlockImports(in: AstNode): List[PositionError] = in match { - - // comma separated import - case ImportClause(_, firstImport, otherImports, _) if otherImports.nonEmpty => - List(PositionError(firstImport.firstToken.offset)) - // other block imports - case b: BlockImportExpr => List(PositionError(b.firstToken.offset)) - - // remaining nodes - case a: AstNode => a.immediateChildren flatMap findBlockImports - } + private def findBlockImports(in: AstNode): List[PositionError] = + in match { + + // comma separated import + case ImportClause(_, firstImport, otherImports, _) if otherImports.nonEmpty => + List(PositionError(firstImport.firstToken.offset)) + // other block imports + case b: BlockImportExpr => List(PositionError(b.firstToken.offset)) + + // remaining nodes + case a: AstNode => a.immediateChildren flatMap findBlockImports + } } diff --git a/src/main/scala/org/scalastyle/scalariform/CyclomaticComplexityChecker.scala b/src/main/scala/org/scalastyle/scalariform/CyclomaticComplexityChecker.scala index 6ce99ab2..e6a12f47 100644 --- a/src/main/scala/org/scalastyle/scalariform/CyclomaticComplexityChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/CyclomaticComplexityChecker.scala @@ -50,9 +50,7 @@ class CyclomaticComplexityChecker extends CombinedChecker { f <- traverse(t) value = matches(f, ast.lines, maximum) if value > maximum - } yield { - PositionError(t.position.get, List("" + value, "" + maximum)) - } + } yield PositionError(t.position.get, List("" + value, "" + maximum)) it } @@ -73,8 +71,9 @@ class CyclomaticComplexityChecker extends CombinedChecker { root - subs + 1 } - private def localvisit(ast: Any): List[FunDefOrDclClazz] = ast match { - case t: FunDefOrDcl => List(FunDefOrDclClazz(t, Some(t.nameToken.offset), visit(t, localvisit))) - case t: Any => visit(t, localvisit) - } + private def localvisit(ast: Any): List[FunDefOrDclClazz] = + ast match { + case t: FunDefOrDcl => List(FunDefOrDclClazz(t, Some(t.nameToken.offset), visit(t, localvisit))) + case t: Any => visit(t, localvisit) + } } diff --git a/src/main/scala/org/scalastyle/scalariform/EmptyInterpolatedStringChecker.scala b/src/main/scala/org/scalastyle/scalariform/EmptyInterpolatedStringChecker.scala index d98e56a7..0509d83e 100644 --- a/src/main/scala/org/scalastyle/scalariform/EmptyInterpolatedStringChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/EmptyInterpolatedStringChecker.scala @@ -29,10 +29,8 @@ class EmptyInterpolatedStringChecker extends ScalariformChecker { val it = for { List(left, right) <- ast.tokens.sliding(2) if left.tokenType == INTERPOLATION_ID && typesSupportingVariables.contains(left.text) && - interpolationRegex.findFirstIn(right.text).isEmpty - } yield { - PositionError(right.offset) - } + interpolationRegex.findFirstIn(right.text).isEmpty + } yield PositionError(right.offset) it.toList } diff --git a/src/main/scala/org/scalastyle/scalariform/ForBraceChecker.scala b/src/main/scala/org/scalastyle/scalariform/ForBraceChecker.scala index 449be603..91652444 100644 --- a/src/main/scala/org/scalastyle/scalariform/ForBraceChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/ForBraceChecker.scala @@ -30,9 +30,9 @@ class ForBraceChecker extends CombinedChecker { for { t <- VisitorHelper.getAll[ForExpr](ast.compilationUnit.immediateChildren.head) if requireBraces(t, ast.lines) && ( - Tokens.LPAREN == t.lParenOrBrace.tokenType || - Tokens.LPAREN == t.rParenOrBrace.tokenType - ) + Tokens.LPAREN == t.lParenOrBrace.tokenType || + Tokens.LPAREN == t.rParenOrBrace.tokenType + ) } yield PositionError(t.lParenOrBrace.offset) } diff --git a/src/main/scala/org/scalastyle/scalariform/ForLoopChecker.scala b/src/main/scala/org/scalastyle/scalariform/ForLoopChecker.scala index 71469f8a..b66010b9 100644 --- a/src/main/scala/org/scalastyle/scalariform/ForLoopChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/ForLoopChecker.scala @@ -11,8 +11,8 @@ class ForLoopChecker extends CombinedChecker { for { t <- VisitorHelper.getAll[ForExpr](ast.compilationUnit.immediateChildren.head) if isLoop(t) && !( - Tokens.LPAREN == t.lParenOrBrace.tokenType && Tokens.RPAREN == t.rParenOrBrace.tokenType - ) + Tokens.LPAREN == t.lParenOrBrace.tokenType && Tokens.RPAREN == t.rParenOrBrace.tokenType + ) } yield PositionError(t.lParenOrBrace.offset) } diff --git a/src/main/scala/org/scalastyle/scalariform/IfBraceChecker.scala b/src/main/scala/org/scalastyle/scalariform/IfBraceChecker.scala index 9e48952a..1224da14 100644 --- a/src/main/scala/org/scalastyle/scalariform/IfBraceChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/IfBraceChecker.scala @@ -39,9 +39,7 @@ class IfBraceChecker extends CombinedChecker { val it = for { t <- localvisit(ast.compilationUnit) f <- traverse(t, ast.lines, singleLineAllowed, doubleLineAllowed) - } yield { - PositionError(f.position) - } + } yield PositionError(f.position) it } @@ -83,21 +81,20 @@ class IfBraceChecker extends CombinedChecker { (ifLine, elseLine) match { case (Some(x), None) => if (singleLineAllowed) !sameLine(ifLine, ifBodyLine) else true - case (Some(x), Some(y)) => { - if (!sameLine(ifLine, ifBodyLine) || !sameLine(elseLine, elseBodyLine)) { + case (Some(x), Some(y)) => + if (!sameLine(ifLine, ifBodyLine) || !sameLine(elseLine, elseBodyLine)) true - } else { - if (sameLine(ifLine, elseLine)) !singleLineAllowed else !doubleLineAllowed - } - } + else if (sameLine(ifLine, elseLine)) !singleLineAllowed + else !doubleLineAllowed case _ => false } } - private[this] def sameLine(l1: Option[LineColumn], l2: Option[LineColumn]) = (l1, l2) match { - case (Some(x), Some(y)) => x.line == y.line - case _ => true - } + private[this] def sameLine(l1: Option[LineColumn], l2: Option[LineColumn]) = + (l1, l2) match { + case (Some(x), Some(y)) => x.line == y.line + case _ => true + } /** this returns Some(x) if we are NOT BlockExpr, i.e. there are no braces */ private[this] def firstLineOfGeneralTokens(body: Expr, lines: Lines) = { @@ -107,13 +104,13 @@ class IfBraceChecker extends CombinedChecker { case e: IfExpr => None case e: Any => lines.toLineColumn(e.tokens.head.offset) } - } else { + } else None - } } - private def localvisit(ast: Any): List[IfExprClazz] = ast match { - case t: IfExpr => List(IfExprClazz(t, t.ifToken.offset, localvisit(t.body), localvisit(t.elseClause))) - case t: Any => visit(t, localvisit) - } + private def localvisit(ast: Any): List[IfExprClazz] = + ast match { + case t: IfExpr => List(IfExprClazz(t, t.ifToken.offset, localvisit(t.body), localvisit(t.elseClause))) + case t: Any => visit(t, localvisit) + } } diff --git a/src/main/scala/org/scalastyle/scalariform/ImportsChecker.scala b/src/main/scala/org/scalastyle/scalariform/ImportsChecker.scala index 7435f40a..2b559d63 100644 --- a/src/main/scala/org/scalastyle/scalariform/ImportsChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/ImportsChecker.scala @@ -52,9 +52,7 @@ abstract class AbstractImportChecker extends ScalariformChecker { val it = for { t <- localvisit(ast.immediateChildren) f <- traverse(t) - } yield { - PositionError(t.t.firstToken.offset) - } + } yield PositionError(t.t.firstToken.offset) it } @@ -73,7 +71,7 @@ abstract class AbstractImportChecker extends ScalariformChecker { val is = t.importSelectors val firsts = is.firstImportSelector.firstToken.text :: - is.otherImportSelectors.map(_._2).map(is => is.firstToken.text) + is.otherImportSelectors.map(_._2).map(is => is.firstToken.text) firsts.map(f => imports(t.prefixExpr.tokens) + f) } @@ -86,11 +84,12 @@ abstract class AbstractImportChecker extends ScalariformChecker { def matches(t: ImportClauseVisit): Boolean - private[this] def localvisit(ast: Any): List[ImportClauseVisit] = ast match { - case t: ImportClause => - List(ImportClauseVisit(t, localvisit(t.importExpr), localvisit(t.otherImportExprs))) - case t: Any => visit(t, localvisit) - } + private[this] def localvisit(ast: Any): List[ImportClauseVisit] = + ast match { + case t: ImportClause => + List(ImportClauseVisit(t, localvisit(t.importExpr), localvisit(t.otherImportExprs))) + case t: Any => visit(t, localvisit) + } } class IllegalImportsChecker extends AbstractImportChecker { @@ -138,9 +137,9 @@ class ImportGroupingChecker extends ScalariformChecker { def verify(ast: CompilationUnit): List[ScalastyleError] = { val it = VisitorHelper.getAll[ImportClause](ast.immediateChildren) - if (it.isEmpty) { + if (it.isEmpty) List() - } else { + else { val importTokens = it.flatMap(_.tokens) val (min, max) = (importTokens.head.offset, importTokens.last.offset) @@ -249,34 +248,28 @@ class ImportOrderChecker extends ScalariformChecker { // If a statement doesn't match the current group, there are two options: // - It belongs to a previous group, in which case an error is flagged. // - It belongs to a following group, in which case the group index moves forward. - for (i <- 0 until currentGroup) { - if (groups(i)._2.matcher(str).matches()) { + for (i <- 0 until currentGroup) + if (groups(i)._2.matcher(str).matches()) return Seq(newError(offset, "wrongGroup", str, groups(i)._1, groups(currentGroup)._1)) - } - } var nextGroup = currentGroup + 1 - while (nextGroup < groups.size && !groups(nextGroup)._2.matcher(str).matches()) { + while (nextGroup < groups.size && !groups(nextGroup)._2.matcher(str).matches()) nextGroup += 1 - } - if (nextGroup == groups.size) { + if (nextGroup == groups.size) throw new IllegalStateException(s"FIXME: import statement does not match any group: $str") - } errors ++= checkGroupSeparation(currentGroup, nextGroup, offset) currentGroup = nextGroup lastImportInGroup = None - } else { + } else // If the statement is in the same group, make sure there is no empty line between it and // the previous import. errors ++= checkNoSeparator(offset) - } // Ensure import is in alphabetical order. - if (lastImportInGroup.isDefined && compareImports(lastImportInGroup.get, str) > 0) { + if (lastImportInGroup.isDefined && compareImports(lastImportInGroup.get, str) > 0) errors += newError(offset, "wrongOrderInGroup", str, lastImportInGroup.get) - } lastImportInGroup = Some(str) errors.toSeq @@ -290,14 +283,13 @@ class ImportOrderChecker extends ScalariformChecker { val errors = new ListBuffer[ScalastyleError]() val names = Seq(first.contents.head.tokens.head.text) ++ - others.map(_._2.contents.head.tokens.head.text) + others.map(_._2.contents.head.tokens.head.text) if (names.size > 1) { names.sliding(2).foreach { case Seq(left, right) => - if (compareNames(left, right, isImport = false) > 0) { + if (compareNames(left, right, isImport = false) > 0) errors += newError(selectors.firstToken.offset, "wrongOrderInSelector", right, left) - } } } @@ -318,11 +310,10 @@ class ImportOrderChecker extends ScalariformChecker { val separatorLines = countNewLines(start, nextGroupOffset) - 1 val last = groups(lastGroup)._1 val current = groups(nextGroup)._1 - if (separatorLines == 0) { + if (separatorLines == 0) return Some(newError(nextGroupOffset, "missingEmptyLine", last, current)) - } else if (maxBlankLines > 0 && separatorLines > maxBlankLines) { + else if (maxBlankLines > 0 && separatorLines > maxBlankLines) return Some(newError(nextGroupOffset, "tooManyEmptyLines", maxBlankLines, last, current)) - } } None @@ -334,9 +325,8 @@ class ImportOrderChecker extends ScalariformChecker { private def checkNoSeparator(offset: Int): Option[ScalastyleError] = { if (lastImportInGroup.isDefined) { val start = lastImport.get.lastToken.offset + lastImport.get.lastToken.length - if (countNewLines(start, offset) != 1) { + if (countNewLines(start, offset) != 1) return Some(newError(offset, "noEmptyLine")) - } } None } @@ -357,10 +347,9 @@ class ImportOrderChecker extends ScalariformChecker { // Do not count a new line after a multi-line comment. ignoreNext = true case w: Whitespace => - if (!ignoreNext) { + if (!ignoreNext) // Assumes "\n" only used for new lines. count += w.text.count(_ == '\n') - } ignoreNext = true case _ => // Nothing to do. @@ -384,22 +373,20 @@ class ImportOrderChecker extends ScalariformChecker { val comp1 = imp1Components(i) val comp2 = imp2Components(i) val result = compareNames(comp1, comp2, isImport = true) - if (result != 0) { + if (result != 0) return result - } } // At this point, there is still a special case: where one import is a multi-import block // (and, thus, has no extra components) and another is a wildcard; the wildcard should come // first. val diff = imp1Components.size - imp2Components.size - if (diff == -1 && imp1.endsWith(".") && imp2Components.last == "_") { + if (diff == -1 && imp1.endsWith(".") && imp2Components.last == "_") 1 - } else if (diff == 1 && imp2.endsWith(".") && imp1Components.last == "_") { + else if (diff == 1 && imp2.endsWith(".") && imp1Components.last == "_") -1 - } else { + else diff - } } /** @@ -414,26 +401,25 @@ class ImportOrderChecker extends ScalariformChecker { * rules for names within a selector. */ private[scalariform] def compareNames(name1: String, name2: String, isImport: Boolean): Int = { - if (lexicographic && isImport) { + if (lexicographic && isImport) name1.compareTo(name2) - } else if (name1 != "_") { - if (name2 == "_") { + else if (name1 != "_") { + if (name2 == "_") -1 * compareNames(name2, name1, isImport) - } else { + else { val isName1UpperCase = Character.isUpperCase(name1.codePointAt(0)) val isName2UpperCase = Character.isUpperCase(name2.codePointAt(0)) - if (isName1UpperCase == isName2UpperCase) { + if (isName1UpperCase == isName2UpperCase) name1.compareToIgnoreCase(name2) - } else { + else { // Classes come before subpackages in import statements, after in selectors. val order = if (isImport) -1 else 1 if (isName1UpperCase) order else -order } } - } else { - if (isImport) -1 else 1 - } + } else if (isImport) -1 + else 1 } private def newError(offset: Int, errorKey: String, args: Any*): ScalastyleError = diff --git a/src/main/scala/org/scalastyle/scalariform/JavaAnnotationChecker.scala b/src/main/scala/org/scalastyle/scalariform/JavaAnnotationChecker.scala index bc551e4b..7af04308 100644 --- a/src/main/scala/org/scalastyle/scalariform/JavaAnnotationChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/JavaAnnotationChecker.scala @@ -29,9 +29,7 @@ abstract class JavaAnnotationChecker extends ScalariformChecker { val it = for { t <- VisitorHelper.getAll[ParserAnnotation](ast.immediateChildren.head) if isValid(t) - } yield { - PositionError(t.firstToken.offset) - } + } yield PositionError(t.firstToken.offset) it } diff --git a/src/main/scala/org/scalastyle/scalariform/LowercasePatternMatchChecker.scala b/src/main/scala/org/scalastyle/scalariform/LowercasePatternMatchChecker.scala index b674435f..5d80eb42 100644 --- a/src/main/scala/org/scalastyle/scalariform/LowercasePatternMatchChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/LowercasePatternMatchChecker.scala @@ -32,9 +32,7 @@ class LowercasePatternMatchChecker extends ScalariformChecker { val it = for { f <- visit(map)(ast.immediateChildren.head) if matches(f) - } yield { - PositionError(f.pattern.firstToken.offset) - } + } yield PositionError(f.pattern.firstToken.offset) it } diff --git a/src/main/scala/org/scalastyle/scalariform/MagicNumberChecker.scala b/src/main/scala/org/scalastyle/scalariform/MagicNumberChecker.scala index 5c9860fe..8de54cb9 100644 --- a/src/main/scala/org/scalastyle/scalariform/MagicNumberChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/MagicNumberChecker.scala @@ -41,17 +41,13 @@ class MagicNumberChecker extends ScalariformChecker { t <- localvisit(ast.immediateChildren.head) f <- traverse(t) if matches(f, ignores) - } yield { - f - } + } yield f val valList = (for { t <- localvisitVal(ast.immediateChildren.head) f <- traverseVal(t) g <- toOption(f) - } yield { - g - }).map { + } yield g).map { case Expr(List(t: Expr)) => t case d: Any => d } @@ -97,11 +93,12 @@ class MagicNumberChecker extends ScalariformChecker { } } - private def localvisit(ast: Any): List[ExprVisit] = ast match { - case Expr(List(t: Expr)) => List(ExprVisit(t, t.firstToken.offset, localvisit(t.contents))) - case t: Expr => List(ExprVisit(t, t.firstToken.offset, localvisit(t.contents))) - case t: Any => VisitorHelper.visit(t, localvisit) - } + private def localvisit(ast: Any): List[ExprVisit] = + ast match { + case Expr(List(t: Expr)) => List(ExprVisit(t, t.firstToken.offset, localvisit(t.contents))) + case t: Expr => List(ExprVisit(t, t.firstToken.offset, localvisit(t.contents))) + case t: Any => VisitorHelper.visit(t, localvisit) + } case class PatDefOrDclVisit( t: PatDefOrDcl, @@ -111,19 +108,20 @@ class MagicNumberChecker extends ScalariformChecker { equalsClauseOption: List[PatDefOrDclVisit] ) - private def localvisitVal(ast: Any): List[PatDefOrDclVisit] = ast match { - case t: PatDefOrDcl => - List( - PatDefOrDclVisit( - t, - t.valOrVarToken, - localvisitVal(t.pattern), - localvisitVal(t.otherPatterns), - localvisitVal(t.equalsClauseOption) + private def localvisitVal(ast: Any): List[PatDefOrDclVisit] = + ast match { + case t: PatDefOrDcl => + List( + PatDefOrDclVisit( + t, + t.valOrVarToken, + localvisitVal(t.pattern), + localvisitVal(t.otherPatterns), + localvisitVal(t.equalsClauseOption) + ) ) - ) - case t: Any => VisitorHelper.visit(t, localvisitVal) - } + case t: Any => VisitorHelper.visit(t, localvisitVal) + } private def traverseVal(t: PatDefOrDclVisit): List[PatDefOrDclVisit] = t :: t.equalsClauseOption.flatMap(traverseVal) diff --git a/src/main/scala/org/scalastyle/scalariform/MethodLengthChecker.scala b/src/main/scala/org/scalastyle/scalariform/MethodLengthChecker.scala index 164a2be5..8418b92a 100644 --- a/src/main/scala/org/scalastyle/scalariform/MethodLengthChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/MethodLengthChecker.scala @@ -47,9 +47,7 @@ class MethodLengthChecker extends CombinedChecker { t <- localvisit(ast.compilationUnit.immediateChildren.head) f <- traverse(t) if matches(f, ast.lines, maxLength, ignoreComments, ignoreEmpty) - } yield { - PositionError(t.position.get, List("" + maxLength)) - } + } yield PositionError(t.position.get, List("" + maxLength)) it } @@ -73,27 +71,25 @@ class MethodLengthChecker extends CombinedChecker { // do not count deftoken line and end block line for (i <- (start + 1) until end) { - val lineText = lines.lines(i - 1).text.trim // zero based index, therefore "-1" when accessing the line + val lineText = + lines.lines(i - 1).text.trim // zero based index, therefore "-1" when accessing the line if (ignoreEmpty && lineText.isEmpty) { // do nothing } else if (lineText.startsWith(SinglelineComment)) { // do nothing } else { - if (lineText.contains(MultilineCommentsOpener)) { + if (lineText.contains(MultilineCommentsOpener)) // multiline comment start /* // this line won't be counted even if // there exists any token before /* multilineComment = true - } - if (!multilineComment) { + if (!multilineComment) count = count + 1 - } - if (lineText.contains(MultilineCommentsCloser)) { + if (lineText.contains(MultilineCommentsCloser)) // multiline comment end */ // this line won't be counted even if // there exists any token after */ multilineComment = false - } } } count @@ -106,15 +102,15 @@ class MethodLengthChecker extends CombinedChecker { lines.lines .slice(head - 1, tail) // extract actual method content .count(_.text.isEmpty) // count empty lines - } else { + } else 0 - } (tail - head + 1) - emptyLines > maxLines } } - private def localvisit(ast: Any): List[FunDefOrDclClazz] = ast match { - case t: FunDefOrDcl => List(FunDefOrDclClazz(t, Some(t.nameToken.offset), localvisit(t.localDef))) - case t: Any => visit(t, localvisit) - } + private def localvisit(ast: Any): List[FunDefOrDclClazz] = + ast match { + case t: FunDefOrDcl => List(FunDefOrDclClazz(t, Some(t.nameToken.offset), localvisit(t.localDef))) + case t: Any => visit(t, localvisit) + } } diff --git a/src/main/scala/org/scalastyle/scalariform/MultipleStringLiteralsChecker.scala b/src/main/scala/org/scalastyle/scalariform/MultipleStringLiteralsChecker.scala index cacab52a..7e87275b 100644 --- a/src/main/scala/org/scalastyle/scalariform/MultipleStringLiteralsChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/MultipleStringLiteralsChecker.scala @@ -49,11 +49,10 @@ class MultipleStringLiteralsChecker extends ScalariformChecker { private def matches(s: String, regex: Regex) = (regex findAllIn (s)).size == 1 private def strip(s: String) = { - if (s.length() > MultiQuoteLength * 2 && startsAndEndsWith(s, MultiQuote)) { + if (s.length() > MultiQuoteLength * 2 && startsAndEndsWith(s, MultiQuote)) Quote + s.substring(MultiQuoteLength, s.length() - MultiQuoteLength) + Quote - } else { + else s - } } private def startsAndEndsWith(s: String, sufpre: String) = s.startsWith(sufpre) && s.endsWith(sufpre) diff --git a/src/main/scala/org/scalastyle/scalariform/NamedArgumentChecker.scala b/src/main/scala/org/scalastyle/scalariform/NamedArgumentChecker.scala index ece6fe8f..ff94588e 100644 --- a/src/main/scala/org/scalastyle/scalariform/NamedArgumentChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/NamedArgumentChecker.scala @@ -36,11 +36,10 @@ class NamedArgumentChecker extends ScalariformChecker { case _ => false } - if (namelessLiteral) { + if (namelessLiteral) List(PositionError(offset)) - } else { + else Nil - } case Argument(Expr(List(StringInterpolation(Token(_, _, offset, _), _, _)))) if checkString => List(PositionError(offset)) diff --git a/src/main/scala/org/scalastyle/scalariform/NoWhitespaceBracketChecker.scala b/src/main/scala/org/scalastyle/scalariform/NoWhitespaceBracketChecker.scala index 10b8ee4b..2260b3b5 100644 --- a/src/main/scala/org/scalastyle/scalariform/NoWhitespaceBracketChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/NoWhitespaceBracketChecker.scala @@ -30,9 +30,7 @@ class NoWhitespaceBeforeLeftBracketChecker extends ScalariformChecker { val it = for { List(left, right) <- ast.tokens.sliding(2) if right.tokenType == LBRACKET && charsBetweenTokens(left, right) > 0 - } yield { - PositionError(left.offset) - } + } yield PositionError(left.offset) it.toList } @@ -45,9 +43,7 @@ class NoWhitespaceAfterLeftBracketChecker extends ScalariformChecker { val it = for { List(left, right) <- ast.tokens.sliding(2) if left.tokenType == LBRACKET && charsBetweenTokens(left, right) > 0 - } yield { - PositionError(left.offset) - } + } yield PositionError(left.offset) it.toList } @@ -60,9 +56,7 @@ class NoWhitespaceBeforeRightBracketChecker extends ScalariformChecker { val it = for { List(left, right) <- ast.tokens.sliding(2) if right.tokenType == RBRACKET && charsBetweenTokens(left, right) > 0 - } yield { - PositionError(right.offset) - } + } yield PositionError(right.offset) it.toList } diff --git a/src/main/scala/org/scalastyle/scalariform/NullChecker.scala b/src/main/scala/org/scalastyle/scalariform/NullChecker.scala index 3b68720c..efb3aa40 100644 --- a/src/main/scala/org/scalastyle/scalariform/NullChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/NullChecker.scala @@ -35,9 +35,7 @@ class NullChecker extends ScalariformChecker { (t, prev) <- ast.tokens.zip(dummyToken :: ast.tokens) if t.tokenType == Tokens.NULL if !(allowNullChecks && prev.tokenType == Tokens.VARID && (prev.text == "==" || prev.text == "!=")) - } yield { - PositionError(t.offset) - } + } yield PositionError(t.offset) it } diff --git a/src/main/scala/org/scalastyle/scalariform/NumberOfTypesChecker.scala b/src/main/scala/org/scalastyle/scalariform/NumberOfTypesChecker.scala index 212e7b60..69f2c5c0 100644 --- a/src/main/scala/org/scalastyle/scalariform/NumberOfTypesChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/NumberOfTypesChecker.scala @@ -32,15 +32,14 @@ class NumberOfTypesChecker extends ScalariformChecker { val it = for { f <- localvisit(ast.immediateChildren(0)) - } yield { - f - } + } yield f if (it.size > maximumTypes) List(FileError(List(maximumTypes.toString))) else List() } - private def localvisit(ast: Any): List[TmplDef] = ast match { - case t: TmplDef => List(t) ::: localvisit(t.templateBodyOption) - case t: Any => visit(t, localvisit) - } + private def localvisit(ast: Any): List[TmplDef] = + ast match { + case t: TmplDef => List(t) ::: localvisit(t.templateBodyOption) + case t: Any => visit(t, localvisit) + } } diff --git a/src/main/scala/org/scalastyle/scalariform/PublicMethodsHaveTypeChecker.scala b/src/main/scala/org/scalastyle/scalariform/PublicMethodsHaveTypeChecker.scala index c54cadab..016cae31 100644 --- a/src/main/scala/org/scalastyle/scalariform/PublicMethodsHaveTypeChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/PublicMethodsHaveTypeChecker.scala @@ -34,8 +34,8 @@ class PublicMethodsHaveTypeChecker extends AbstractSingleMethodChecker[PublicMet false case _ => t.funDefOrDcl.returnTypeOpt.isEmpty && !privateOrProtected(t.fullDefOrDcl.modifiers) && - !isConstructor(t.fullDefOrDcl.defOrDcl) && - !(p.ignoreOverride && isOverride(t.fullDefOrDcl.modifiers)) && !t.insideDefOrValOrVar + !isConstructor(t.fullDefOrDcl.defOrDcl) && + !(p.ignoreOverride && isOverride(t.fullDefOrDcl.modifiers)) && !t.insideDefOrValOrVar } } } diff --git a/src/main/scala/org/scalastyle/scalariform/RedundantIfChecker.scala b/src/main/scala/org/scalastyle/scalariform/RedundantIfChecker.scala index 2da5ca56..b3b4d596 100644 --- a/src/main/scala/org/scalastyle/scalariform/RedundantIfChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/RedundantIfChecker.scala @@ -39,9 +39,7 @@ class RedundantIfChecker extends CombinedChecker { val it = for { t <- localvisit(ast.compilationUnit) if matches(t) - } yield { - PositionError(t.firstToken.offset) - } + } yield PositionError(t.firstToken.offset) it } @@ -49,22 +47,25 @@ class RedundantIfChecker extends CombinedChecker { private def matches(t: IfExpr): Boolean = isBoolean(t.body) && isBoolean(t.elseClause) - private def isBoolean(t: Option[ElseClause]): Boolean = t match { - case Some(ElseClause(None, tok, expr)) => tok.tokenType == ELSE && isBoolean(expr) - case _ => false - } - private def isBoolean(t: Expr): Boolean = t match { - case Expr(List(GeneralTokens(List(a)))) => isBoolean(a) - case Expr( - List(BlockExpr(_, Right(StatSeq(None, Some(Expr(List(GeneralTokens(List(a))))), List())), _)) - ) => - isBoolean(a) - case _ => false - } + private def isBoolean(t: Option[ElseClause]): Boolean = + t match { + case Some(ElseClause(None, tok, expr)) => tok.tokenType == ELSE && isBoolean(expr) + case _ => false + } + private def isBoolean(t: Expr): Boolean = + t match { + case Expr(List(GeneralTokens(List(a)))) => isBoolean(a) + case Expr( + List(BlockExpr(_, Right(StatSeq(None, Some(Expr(List(GeneralTokens(List(a))))), List())), _)) + ) => + isBoolean(a) + case _ => false + } private def isBoolean(t: Token): Boolean = Set(TRUE, FALSE).contains(t.tokenType) - private def localvisit(ast: Any): List[IfExpr] = ast match { - case t: IfExpr => List(t) ++ localvisit(t.body) ++ localvisit(t.elseClause.map(_.elseBody)) - case t: Any => visit(t, localvisit) - } + private def localvisit(ast: Any): List[IfExpr] = + ast match { + case t: IfExpr => List(t) ++ localvisit(t.body) ++ localvisit(t.elseClause.map(_.elseBody)) + case t: Any => visit(t, localvisit) + } } diff --git a/src/main/scala/org/scalastyle/scalariform/ScalaDocChecker.scala b/src/main/scala/org/scalastyle/scalariform/ScalaDocChecker.scala index 97723797..2310479a 100644 --- a/src/main/scala/org/scalastyle/scalariform/ScalaDocChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/ScalaDocChecker.scala @@ -79,9 +79,9 @@ class ScalaDocChecker extends CombinedChecker { val ts = tokens.dropWhile(_.tokenType != CLASS) val ignore = ts.nonEmpty && ts(1).text.matches(ignoreRegex) - if (ignore) { + if (ignore) Nil - } else { + else { localVisit(skip = false, HiddenTokens(Nil), ignoreOverride, indentStyle, ast.lines, tokensToIgnore)( ast.compilationUnit.immediateChildren.head ) @@ -119,28 +119,28 @@ class ScalaDocChecker extends CombinedChecker { } private def indentErrors(line: Int, style: DocIndentStyle)(scalaDoc: ScalaDoc): List[ScalastyleError] = - if (style == AnyDocStyle || style == scalaDoc.indentStyle) { + if (style == AnyDocStyle || style == scalaDoc.indentStyle) Nil - } else { + else List(LineError(line, List(InvalidDocStyle))) - } // parse the parameters and report errors for the parameters (constructor or method) private def paramErrors(line: Int, paramClausesOpt: Option[ParamClauses])( scalaDoc: ScalaDoc ): List[ScalastyleError] = { - def params(xs: List[Token]): List[String] = xs match { - // @annotation a: B; @annotation(...) a: B - case Token(_, "@", _, _) :: Token(_, annotation, _, _) :: - Token(_, paramName, _, _) :: Token(_, ":", _, _) :: Token(_, _, _, _) :: t => - paramName :: params(t) - // a: B - case Token(_, paramName, _, _) :: Token(_, ":", _, _) :: Token(_, _, _, _) :: t => - paramName :: params(t) - // any other token - case _ :: t => params(t) - case Nil => Nil - } + def params(xs: List[Token]): List[String] = + xs match { + // @annotation a: B; @annotation(...) a: B + case Token(_, "@", _, _) :: Token(_, annotation, _, _) :: + Token(_, paramName, _, _) :: Token(_, ":", _, _) :: Token(_, _, _, _) :: t => + paramName :: params(t) + // a: B + case Token(_, paramName, _, _) :: Token(_, ":", _, _) :: Token(_, _, _, _) :: t => + paramName :: params(t) + // any other token + case _ :: t => params(t) + case Nil => Nil + } val paramNames = paramClausesOpt.map(pc => params(pc.tokens)).getOrElse(Nil) @@ -149,8 +149,8 @@ class ScalaDocChecker extends CombinedChecker { val validScalaDocParams = scalaDoc.params.filter(param => paramNames.contains(param.name)) missingScalaDocParams.map(missing => LineError(line, List(missingParam(missing)))) ++ - extraScalaDocParams.map(extra => LineError(line, List(extraParam(extra.name)))) ++ - validScalaDocParams.filter(_.text.isEmpty).map(empty => LineError(line, List(emptyParam(empty.name)))) + extraScalaDocParams.map(extra => LineError(line, List(extraParam(extra.name)))) ++ + validScalaDocParams.filter(_.text.isEmpty).map(empty => LineError(line, List(emptyParam(empty.name)))) // if (!scalaDoc.params.forall(p => paramNames.exists(name => p.name == name && !p.text.isEmpty))) List(LineError(line, List(MalformedParams))) // else Nil @@ -174,11 +174,11 @@ class ScalaDocChecker extends CombinedChecker { xs match { // [... @foo A ...] case Token(Tokens.AT, _, _, _) :: Token(Tokens.VARID, _, _, _) :: Token( - Tokens.VARID, - paramName, - _, - _ - ) :: t => + Tokens.VARID, + paramName, + _, + _ + ) :: t => paramName :: tparams(t, bracketDepth) // [... @foo(...) A ...] case Token(Tokens.RPAREN, _, _, _) :: Token(Tokens.VARID, paramName, _, _) :: t => @@ -201,15 +201,14 @@ class ScalaDocChecker extends CombinedChecker { val tparamNames = tparamClausesOpt.map(tc => tparams(tc.tokens, 0)).getOrElse(Nil) - if (tparamNames.size != scalaDoc.typeParams.size) { + if (tparamNames.size != scalaDoc.typeParams.size) // bad param sizes List(LineError(line, List(MalformedTypeParams))) - } else { - if (!scalaDoc.typeParams.forall(tp => tparamNames.contains(tp.name))) { + else { + if (!scalaDoc.typeParams.forall(tp => tparamNames.contains(tp.name))) List(LineError(line, List(MalformedTypeParams))) - } else { + else Nil - } } } // scalastyle:on cyclomatic.complexity @@ -220,11 +219,10 @@ class ScalaDocChecker extends CombinedChecker { ): List[ScalastyleError] = { val needsReturn = returnTypeOpt.exists { case (_, tpe) => tpe.firstToken.text != "Unit" } - if (needsReturn && scalaDoc.returns.isEmpty) { + if (needsReturn && scalaDoc.returns.isEmpty) List(LineError(line, List(MalformedReturn))) - } else { + else Nil - } } /* @@ -288,17 +286,18 @@ class ScalaDocChecker extends CombinedChecker { val (_, line) = lines.findLineAndIndex(t.firstToken.offset).get // we are checking parameters and type parameters - val errors = if (shouldSkip(t)) { - Nil - } else { - findScalaDoc(t.firstToken, lines, fallback) - .map { scalaDoc => - paramErrors(line, t.paramClausesOpt)(scalaDoc) ++ - tparamErrors(line, t.typeParamClauseOpt)(scalaDoc) ++ - indentErrors(line, indentStyle)(scalaDoc) - } - .getOrElse(List(LineError(line, List(Missing)))) - } + val errors = + if (shouldSkip(t)) + Nil + else { + findScalaDoc(t.firstToken, lines, fallback) + .map { scalaDoc => + paramErrors(line, t.paramClausesOpt)(scalaDoc) ++ + tparamErrors(line, t.typeParamClauseOpt)(scalaDoc) ++ + indentErrors(line, indentStyle)(scalaDoc) + } + .getOrElse(List(LineError(line, List(Missing)))) + } // and we descend, because we're interested in seeing members of the types errors ++ visit( @@ -310,18 +309,19 @@ class ScalaDocChecker extends CombinedChecker { val (_, line) = lines.findLineAndIndex(t.firstToken.offset).get // we are checking parameters, type parameters and returns - val errors = if (shouldSkip(t)) { - Nil - } else { - findScalaDoc(t.firstToken, lines, fallback) - .map { scalaDoc => - paramErrors(line, Some(t.paramClauses))(scalaDoc) ++ - tparamErrors(line, t.typeParamClauseOpt)(scalaDoc) ++ - returnErrors(line, t.returnTypeOpt)(scalaDoc) ++ - indentErrors(line, indentStyle)(scalaDoc) - } - .getOrElse(List(LineError(line, List(Missing)))) - } + val errors = + if (shouldSkip(t)) + Nil + else { + findScalaDoc(t.firstToken, lines, fallback) + .map { scalaDoc => + paramErrors(line, Some(t.paramClauses))(scalaDoc) ++ + tparamErrors(line, t.typeParamClauseOpt)(scalaDoc) ++ + returnErrors(line, t.returnTypeOpt)(scalaDoc) ++ + indentErrors(line, indentStyle)(scalaDoc) + } + .getOrElse(List(LineError(line, List(Missing)))) + } // we don't descend any further errors @@ -343,29 +343,30 @@ class ScalaDocChecker extends CombinedChecker { case t: PatDefOrDcl => // val a = ..., var a = ... val (_, line) = lines.findLineAndIndex(t.valOrVarToken.offset).get - val errors = if (shouldSkip(t)) { - Nil - } else { - findScalaDoc(t.firstToken, lines, fallback) - .map(scalaDoc => indentErrors(line, indentStyle)(scalaDoc)) - .getOrElse(List(LineError(line, List(Missing)))) - } + val errors = + if (shouldSkip(t)) + Nil + else { + findScalaDoc(t.firstToken, lines, fallback) + .map(scalaDoc => indentErrors(line, indentStyle)(scalaDoc)) + .getOrElse(List(LineError(line, List(Missing)))) + } // we don't descend any further errors case t: StatSeq => localVisit(skip, fallback, ignoreOverride, indentStyle, lines, tokensToIgnore)(t.firstStatOpt) ++ ( - for (statOpt <- t.otherStats) - yield localVisit( - skip, - statOpt._1.associatedWhitespaceAndComments, - ignoreOverride, - indentStyle, - lines, - tokensToIgnore - )(statOpt._2) - ).flatten + for (statOpt <- t.otherStats) + yield localVisit( + skip, + statOpt._1.associatedWhitespaceAndComments, + ignoreOverride, + indentStyle, + lines, + tokensToIgnore + )(statOpt._2) + ).flatten case t: Any => // anything else, we descend (unless we stopped above) @@ -379,7 +380,7 @@ class ScalaDocChecker extends CombinedChecker { if (wrongTokensToIgnore.nonEmpty) { throw new IllegalArgumentException( s"ignoreTokenTypes contained wrong types: $wrongTokensToIgnore, " + - s"available types are $availableTokensToIgnore" + s"available types are $availableTokensToIgnore" ) } } @@ -408,12 +409,13 @@ object ScalaDocChecker { object AnyDocStyle extends DocIndentStyle object UndefinedDocStyle extends DocIndentStyle - def getStyleFrom(name: String): DocIndentStyle = name.toLowerCase match { - case "scaladoc" => ScalaDocStyle - case "javadoc" => JavaDocStyle - case "anydoc" | "" => AnyDocStyle - case _ => throw new RuntimeException(s"Unsupported ScalaDocChecker indentStyle: '$name'") - } + def getStyleFrom(name: String): DocIndentStyle = + name.toLowerCase match { + case "scaladoc" => ScalaDocStyle + case "javadoc" => JavaDocStyle + case "anydoc" | "" => AnyDocStyle + case _ => throw new RuntimeException(s"Unsupported ScalaDocChecker indentStyle: '$name'") + } /** * Companion for the ScalaDoc object that parses its text to pick up its elements @@ -443,25 +445,26 @@ object ScalaDocChecker { val strings = raw.rawText.split("\\n").toList val indentStyle = { - def getStyle(xs: List[String], style: DocIndentStyle): DocIndentStyle = xs match { - case x :: tail => - val prefixSizeDiff = - if (x.trim.head == '*') x.substring(0, x.indexOf("*")).length - offset else -1 - val lineStyle = prefixSizeDiff match { - case 1 => JavaDocStyle - case 2 => ScalaDocStyle - case _ => AnyDocStyle - } - style match { - case ScalaDocStyle | JavaDocStyle => - if (lineStyle == style) getStyle(tail, style) else AnyDocStyle - case AnyDocStyle => - AnyDocStyle - case UndefinedDocStyle => - getStyle(tail, lineStyle) - } - case Nil => if (style == UndefinedDocStyle) AnyDocStyle else style - } + def getStyle(xs: List[String], style: DocIndentStyle): DocIndentStyle = + xs match { + case x :: tail => + val prefixSizeDiff = + if (x.trim.head == '*') x.substring(0, x.indexOf("*")).length - offset else -1 + val lineStyle = prefixSizeDiff match { + case 1 => JavaDocStyle + case 2 => ScalaDocStyle + case _ => AnyDocStyle + } + style match { + case ScalaDocStyle | JavaDocStyle => + if (lineStyle == style) getStyle(tail, style) else AnyDocStyle + case AnyDocStyle => + AnyDocStyle + case UndefinedDocStyle => + getStyle(tail, lineStyle) + } + case Nil => if (style == UndefinedDocStyle) AnyDocStyle else style + } getStyle(strings.tail, UndefinedDocStyle) } diff --git a/src/main/scala/org/scalastyle/scalariform/SimplifyBooleanExpressionChecker.scala b/src/main/scala/org/scalastyle/scalariform/SimplifyBooleanExpressionChecker.scala index e2281150..c42849da 100644 --- a/src/main/scala/org/scalastyle/scalariform/SimplifyBooleanExpressionChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/SimplifyBooleanExpressionChecker.scala @@ -38,16 +38,12 @@ class SimplifyBooleanExpressionChecker extends ScalariformChecker { val it1 = for { List(left, right) <- ast.tokens.sliding(2); if (left.text == "!" && isBoolean(right)) - } yield { - PositionError(left.offset) - } + } yield PositionError(left.offset) val it2 = for { t <- localvisit(ast); if (matches(t)) - } yield { - PositionError(t.position.get) - } + } yield PositionError(t.position.get) (it1.toList ::: it2.toList).sortWith((a, b) => a.position < b.position) } @@ -70,16 +66,17 @@ class SimplifyBooleanExpressionChecker extends ScalariformChecker { case class GeneralTokensClazz(_position: Option[Int], bool: Boolean) extends BaseClazz[GeneralTokens](_position) - private def localvisit(ast: Any): List[BaseClazz[AstNode]] = ast match { - case t: InfixExpr => - List(InfixExprClazz(Some(t.firstToken.offset), t.infixId, localvisit(t.left), localvisit(t.right))) - case t: GeneralTokens => List(GeneralTokensClazz(Some(t.firstToken.offset), isBoolean(t))) - case t: Any => visit(t, localvisit) - } + private def localvisit(ast: Any): List[BaseClazz[AstNode]] = + ast match { + case t: InfixExpr => + List(InfixExprClazz(Some(t.firstToken.offset), t.infixId, localvisit(t.left), localvisit(t.right))) + case t: GeneralTokens => List(GeneralTokensClazz(Some(t.firstToken.offset), isBoolean(t))) + case t: Any => visit(t, localvisit) + } private def boolean(expr: List[Clazz[_]]) = expr.size == 1 && expr(0) - .isInstanceOf[GeneralTokensClazz] && expr(0).asInstanceOf[GeneralTokensClazz].bool + .isInstanceOf[GeneralTokensClazz] && expr(0).asInstanceOf[GeneralTokensClazz].bool private def isBoolean(t: GeneralTokens): Boolean = t.tokens.size == 1 && isBoolean(t.tokens(0)) private def isBoolean(t: Token): Boolean = Set(TRUE, FALSE).contains(t.tokenType) diff --git a/src/main/scala/org/scalastyle/scalariform/SpaceAfterCommentStartChecker.scala b/src/main/scala/org/scalastyle/scalariform/SpaceAfterCommentStartChecker.scala index f0178132..a7e7b327 100644 --- a/src/main/scala/org/scalastyle/scalariform/SpaceAfterCommentStartChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/SpaceAfterCommentStartChecker.scala @@ -47,11 +47,11 @@ class SpaceAfterCommentStartChecker extends ScalariformChecker { private def multiLineCommentRegex(comment: Token) = Pattern.compile("""/\*\S+.*""", Pattern.DOTALL).matcher(comment.text.trim).matches() || - Pattern.compile("""/\*.*\S\*/""", Pattern.DOTALL).matcher(comment.text.trim).matches() + Pattern.compile("""/\*.*\S\*/""", Pattern.DOTALL).matcher(comment.text.trim).matches() private def scalaDocPatternRegex(comment: Token) = Pattern.compile("""/\*\*\S+.*""", Pattern.DOTALL).matcher(comment.text.trim).matches() || - Pattern.compile("""/\*\*.*\S\*/""", Pattern.DOTALL).matcher(comment.text.trim).matches() + Pattern.compile("""/\*\*.*\S\*/""", Pattern.DOTALL).matcher(comment.text.trim).matches() private def singleLineCommentRegex(comment: String): Boolean = comment.matches("""//\S+.*""") && !comment.matches("""///+""") diff --git a/src/main/scala/org/scalastyle/scalariform/SpaceAroundTokenChecker.scala b/src/main/scala/org/scalastyle/scalariform/SpaceAroundTokenChecker.scala index e8bb0025..60a8dd34 100644 --- a/src/main/scala/org/scalastyle/scalariform/SpaceAroundTokenChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/SpaceAroundTokenChecker.scala @@ -30,11 +30,10 @@ trait SpaceAroundTokenChecker extends ScalariformChecker { val beforeToken: Boolean private def checkSpaces(left: Token, middle: Token, right: Token) = - if (beforeToken) { + if (beforeToken) charsBetweenTokens(left, middle) != (if (disallowSpace) 0 else 1) - } else { + else charsBetweenTokens(middle, right) != (if (disallowSpace) 0 else 1) - } def verify(ast: CompilationUnit): List[ScalastyleError] = { val tokens: Seq[TokenType] = @@ -42,13 +41,11 @@ trait SpaceAroundTokenChecker extends ScalariformChecker { (for { l @ List(left, middle, right) <- ast.tokens.sliding(3) if (l.forall(x => x.tokenType != Tokens.NEWLINE && x.tokenType != Tokens.NEWLINES) - && tokens.contains(middle.tokenType) - && !(middle.associatedWhitespaceAndComments.containsNewline && beforeToken) - && (!right.associatedWhitespaceAndComments.containsNewline || beforeToken) - && checkSpaces(left, middle, right)) - } yield { - PositionError(middle.offset, List(middle.text)) - }).toList + && tokens.contains(middle.tokenType) + && !(middle.associatedWhitespaceAndComments.containsNewline && beforeToken) + && (!right.associatedWhitespaceAndComments.containsNewline || beforeToken) + && checkSpaces(left, middle, right)) + } yield PositionError(middle.offset, List(middle.text))).toList } } diff --git a/src/main/scala/org/scalastyle/scalariform/SpacesAfterPlusChecker.scala b/src/main/scala/org/scalastyle/scalariform/SpacesAfterPlusChecker.scala index 601dd59f..57eb076a 100644 --- a/src/main/scala/org/scalastyle/scalariform/SpacesAfterPlusChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/SpacesAfterPlusChecker.scala @@ -33,9 +33,7 @@ class SpacesAfterPlusChecker extends ScalariformChecker { val it = for { t <- localVisit(ast.immediateChildren(0)) if isInvalidPlusInfix(t) - } yield { - PositionError(t.infixId.offset) - } + } yield PositionError(t.infixId.offset) it.toList } @@ -45,13 +43,13 @@ class SpacesAfterPlusChecker extends ScalariformChecker { val isLBracket = infix.left.lastOption.exists(_.tokens.lastOption.exists(_.tokenType == LBRACKET)) val newLineExists = infix.newlineOption.exists(_.tokenType == NEWLINE) !isLBracket && !newLineExists && charsBetweenTokens(infix.infixId, infix.right.head.tokens.head) == 0 - } else { + } else false - } } - private def localVisit(ast: Any): List[InfixExpr] = ast match { - case expr: InfixExpr => List(expr) - case other: Any => visit(other, localVisit) - } + private def localVisit(ast: Any): List[InfixExpr] = + ast match { + case expr: InfixExpr => List(expr) + case other: Any => visit(other, localVisit) + } } diff --git a/src/main/scala/org/scalastyle/scalariform/SpacesBeforePlusChecker.scala b/src/main/scala/org/scalastyle/scalariform/SpacesBeforePlusChecker.scala index e3bd8ceb..3cd1505a 100644 --- a/src/main/scala/org/scalastyle/scalariform/SpacesBeforePlusChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/SpacesBeforePlusChecker.scala @@ -31,12 +31,10 @@ class SpacesBeforePlusChecker extends ScalariformChecker { val it = for { List(left, middle, right) <- ast.tokens.sliding(3) if middle.tokenType == PLUS && left.tokenType != LBRACKET && left.tokenType != NEWLINE && charsBetweenTokens( - left, - middle - ) == 0 - } yield { - PositionError(middle.offset) - } + left, + middle + ) == 0 + } yield PositionError(middle.offset) it.toList } diff --git a/src/main/scala/org/scalastyle/scalariform/VarChecker.scala b/src/main/scala/org/scalastyle/scalariform/VarChecker.scala index daa13a59..602c77cb 100644 --- a/src/main/scala/org/scalastyle/scalariform/VarChecker.scala +++ b/src/main/scala/org/scalastyle/scalariform/VarChecker.scala @@ -31,23 +31,22 @@ abstract class VarChecker extends ScalariformChecker { def verify(ast: CompilationUnit): List[ScalastyleError] = { val it = for { f <- localvisit(false)(ast.immediateChildren(0)) - } yield { - PositionError(f.firstToken.offset) - } + } yield PositionError(f.firstToken.offset) it.toList } protected def matches(enclosingFunction: Boolean): Boolean - private def localvisit(enclosingFunction: Boolean)(ast: Any): List[PatDefOrDcl] = ast match { - case t: PatDefOrDcl if t.valOrVarToken.tokenType == VAR && matches(enclosingFunction) => - List(t) ::: visit(t, localvisit(enclosingFunction)) - case t: TemplateBody => visit(t, localvisit(false)) - case t: FunBody => visit(t, localvisit(true)) - case t: AnonymousFunction => visit(t, localvisit(true)) - case t: Any => visit(t, localvisit(enclosingFunction)) - } + private def localvisit(enclosingFunction: Boolean)(ast: Any): List[PatDefOrDcl] = + ast match { + case t: PatDefOrDcl if t.valOrVarToken.tokenType == VAR && matches(enclosingFunction) => + List(t) ::: visit(t, localvisit(enclosingFunction)) + case t: TemplateBody => visit(t, localvisit(false)) + case t: FunBody => visit(t, localvisit(true)) + case t: AnonymousFunction => visit(t, localvisit(true)) + case t: Any => visit(t, localvisit(enclosingFunction)) + } } class VarLocalChecker extends VarChecker { diff --git a/src/main/scala/org/scalastyle/util/CreateRulesMarkdown.scala b/src/main/scala/org/scalastyle/util/CreateRulesMarkdown.scala index beace3e6..eeb396b5 100644 --- a/src/main/scala/org/scalastyle/util/CreateRulesMarkdown.scala +++ b/src/main/scala/org/scalastyle/util/CreateRulesMarkdown.scala @@ -58,17 +58,17 @@ object CreateRulesMarkdown { private def toList(elem: NodeSeq) = elem.map(_.text.trim) private def toXml(description: String, s: String): Elem = { - try { - XML.loadString(s) - } catch { + try XML.loadString(s) + catch { case e: Exception => throw new IllegalArgumentException(description + " for " + s, e) } } - private def withTitle(os: Option[String], title: String): List[String] = os match { - case Some(x) => List("#### " + title, x, "") - case _ => Nil - } + private def withTitle(os: Option[String], title: String): List[String] = + os match { + case Some(x) => List("#### " + title, x, "") + case _ => Nil + } private def id(s: String) = s.replaceAll("\\.", "_") @@ -101,19 +101,20 @@ object CreateRulesMarkdown { val parametersTitle = List("#### Parameters") - val parameters = if (c.parameters.isEmpty) { - List("No parameters") - } else { - val headers = List("Parameter", "Description", "Type", "Default Value").map(s => {s}) - val header = {headers} - val f = c.parameters.map(p => {p._2.name} + val parameters = + if (c.parameters.isEmpty) + List("No parameters") + else { + val headers = List("Parameter", "Description", "Type", "Default Value").map(s => {s}) + val header = {headers} + val f = c.parameters.map(p => {p._2.name} {config.getString(c.id + "." + p._2.name + ".label")} {p._2.typeName.name} {p._2.defaultValue} ) - val x = {header}{f}
- List(x.toString) - } + val x = {header}{f}
+ List(x.toString) + } val x = doc.example.map(x => new PrettyPrinter(1000, 1).format(toXml(docFile + ":" + c.id, x))) @@ -176,16 +177,14 @@ object CreateRulesMarkdown { } def main(args: Array[String]): Unit = { - if (args.length == 0) { + if (args.length == 0) usage(BuildInfo.version) - } else { - try { - generateToFile(args(0)) - } catch { - case e: Exception => { + else { + try generateToFile(args(0)) + catch { + case e: Exception => e.printStackTrace(System.err) System.exit(1) - } } } } diff --git a/src/test/scala/org/scalastyle/OutputTest.scala b/src/test/scala/org/scalastyle/OutputTest.scala index 9a6158c0..7f05a2b9 100644 --- a/src/test/scala/org/scalastyle/OutputTest.scala +++ b/src/test/scala/org/scalastyle/OutputTest.scala @@ -151,9 +151,8 @@ class OutputTest extends AssertionsForJUnit { new java.io.File("target").mkdir() - try { - XmlOutput.save(ConfigFactory.load(), "target/does.not.exist/OutputTest.xml", "UTF-8", messages) - } catch { + try XmlOutput.save(ConfigFactory.load(), "target/does.not.exist/OutputTest.xml", "UTF-8", messages) + catch { case e: java.io.FileNotFoundException => // OK case _: Throwable => fail("expected FileNotFoundException") } diff --git a/src/test/scala/org/scalastyle/file/HeaderMatchesCheckerTest.scala b/src/test/scala/org/scalastyle/file/HeaderMatchesCheckerTest.scala index 12bbb8d5..68b0052b 100644 --- a/src/test/scala/org/scalastyle/file/HeaderMatchesCheckerTest.scala +++ b/src/test/scala/org/scalastyle/file/HeaderMatchesCheckerTest.scala @@ -87,20 +87,19 @@ class HeaderMatchesCheckerTest extends AssertionsForJUnit with CheckerTest { assertErrors(List(lineError(4)), shortSourceWin, Map("header" -> licenseUnix)) } - def literalOK(c: Char): Boolean = c match { - case ' ' | '-' | ':' | '/' | '\n' => true - case ld: Any if ld.isLetterOrDigit => true - case _ => false - } - - val licenceRegexUnix = { + def literalOK(c: Char): Boolean = + c match { + case ' ' | '-' | ':' | '/' | '\n' => true + case ld: Any if ld.isLetterOrDigit => true + case _ => false + } + + val licenceRegexUnix = (licenseUnix flatMap { c => if (literalOK(c)) c.toString else "\\" + c }) .replace("2009-2010", "(?:\\d{4}-)?\\d{4}") - } - val licenceRegexWin = { + val licenceRegexWin = (licenseWin flatMap { c => if (literalOK(c)) c.toString else "\\" + c }) .replace("2009-2010", "(?:\\d{4}-)?\\d{4}") - } @Test def testRegexOK(): Unit = { val sourceLines = licenseLines ::: baseSourceLines diff --git a/src/test/scala/org/scalastyle/scalariform/ImportsCheckerTest.scala b/src/test/scala/org/scalastyle/scalariform/ImportsCheckerTest.scala index 15e9d5ac..3a322243 100644 --- a/src/test/scala/org/scalastyle/scalariform/ImportsCheckerTest.scala +++ b/src/test/scala/org/scalastyle/scalariform/ImportsCheckerTest.scala @@ -212,9 +212,7 @@ class ImportOrderCheckerTest extends AssertionsForJUnit with CheckerTest { "maxBlankLines" -> "2" ) val paramsLexicographic = - params ++ Seq( - "lexicographic" -> "true" - ) + params ++ Seq("lexicographic" -> "true") @Test def testNameComparison(): Unit = { val checker = new ImportOrderChecker() diff --git a/src/test/scala/org/scalastyle/scalariform/ScalaDocCheckerTest.scala b/src/test/scala/org/scalastyle/scalariform/ScalaDocCheckerTest.scala index 2534e674..f9f10e41 100644 --- a/src/test/scala/org/scalastyle/scalariform/ScalaDocCheckerTest.scala +++ b/src/test/scala/org/scalastyle/scalariform/ScalaDocCheckerTest.scala @@ -429,9 +429,7 @@ class ScalaDocCheckerTest extends AssertionsForJUnit with CheckerTest { for { (declerations, ignoreTokenType) <- cases decleration <- declerations - } { - assertErrors(Nil, decleration, Map("ignoreTokenTypes" -> ignoreTokenType)) - } + } assertErrors(Nil, decleration, Map("ignoreTokenTypes" -> ignoreTokenType)) } @Test def ignoreOverridden(): Unit = {