diff --git a/src/main/scala/org/scalastyle/sbt/Plugin.scala b/src/main/scala/org/scalastyle/sbt/Plugin.scala
index fbd5234..a4abf49 100644
--- a/src/main/scala/org/scalastyle/sbt/Plugin.scala
+++ b/src/main/scala/org/scalastyle/sbt/Plugin.scala
@@ -110,7 +110,7 @@ object ScalastylePlugin extends Plugin {
scalastyleFailOnError := true,
(scalastyleFailOnError in Test) := (scalastyleFailOnError in scalastyle).value,
scalastyleSources := Seq((scalaSource in Compile).value),
- (scalastyleSources in Test) := Seq((scalaSource in Test).value)
+ (scalastyleSources in Test) := (scalastyleSources in scalastyle).value
) ++
Project.inConfig(Compile)(rawScalastyleSettings()) ++
Project.inConfig(Test)(rawScalastyleSettings())
@@ -120,8 +120,13 @@ object Tasks {
def doScalastyle(args: Seq[String], config: File, configUrl: Option[URL], failOnError: Boolean, scalastyleSources: Seq[File], scalastyleTarget: File,
streams: TaskStreams[ScopedKey[_]], refreshHours: Integer, target: File, urlCacheFile: String): Unit = {
val logger = streams.log
+ val quietArg = "q"
+ val warnErrorArg = "w"
+ val supportedArgs = Set(quietArg, warnErrorArg)
- val quiet = args.exists(_ == "q")
+ val quiet = args.contains(quietArg)
+ val warnError = args.contains(warnErrorArg)
+ println("config=" + config)
def onHasErrors(message: String): Unit = {
if (failOnError) {
@@ -155,15 +160,29 @@ object Tasks {
f
}
+ def isInProject(sources: Seq[File])(f: File) = {
+ val validFile = f.exists() && sources.find(s => f.getAbsolutePath.startsWith(s.getAbsolutePath)).isDefined
+ if (!validFile) logger.warn(s"File $f does not exist in project")
+ validFile
+ }
+
def doScalastyleWithConfig(config: File): Unit = {
val messageConfig = ConfigFactory.load(new ScalastyleChecker().getClass().getClassLoader())
//streams.log.error("messageConfig=" + messageConfig.root().render())
+ System.out.println("args=" + args)
+ System.out.println("scalastyleSources=" + scalastyleSources)
+
+ val filesToProcess: Seq[File] = args.filterNot(supportedArgs.contains).map(file).filter(isInProject(scalastyleSources)) match {
+ case Nil => scalastyleSources
+ case files => files
+ }
- val messages = runScalastyle(config, scalastyleSources)
+ println("filesToProcess=" + filesToProcess)
+ println("config=" + config)
+ val messages = runScalastyle(config, filesToProcess)
saveToXml(messageConfig, messages, scalastyleTarget.absolutePath)
- val warnError = args.exists(_ == "w")
val result = printResults(messageConfig, logger, messages, quiet = quiet, warnError = warnError)
if (!quiet) {
logger.success("created output: %s".format(target))
@@ -188,9 +207,9 @@ object Tasks {
getFileFromJar(getClass.getResource("/scalastyle-config.xml"), config.absolutePath, streams.log)
}
- private[this] def runScalastyle(config: File, scalastyleSources: Seq[File]) = {
+ private[this] def runScalastyle(config: File, filesToProcess: Seq[File]) = {
val configuration = ScalastyleConfiguration.readFromXml(config.absolutePath)
- new ScalastyleChecker().checkFiles(configuration, Directory.getFiles(None, scalastyleSources.toList))
+ new ScalastyleChecker().checkFiles(configuration, Directory.getFiles(None, filesToProcess))
}
private[this] def printResults(config: Config, logger: Logger, messages: List[Message[FileSpec]], quiet: Boolean = false, warnError: Boolean = false): OutputResult = {
diff --git a/src/sbt-test/specific-files/directories/build.sbt b/src/sbt-test/specific-files/directories/build.sbt
new file mode 100644
index 0000000..bd2c59a
--- /dev/null
+++ b/src/sbt-test/specific-files/directories/build.sbt
@@ -0,0 +1,16 @@
+version := "0.1"
+
+scalaVersion := "2.10.0"
+
+val containsMessage = taskKey[Boolean]("contains message")
+
+containsMessage := {
+ val search = "File length exceeds"
+ val filename = "target/scalastyle-result.xml"
+ val lines = sbt.IO.readLines(file(filename))
+ val contains = lines.find(s => s.contains(search)).isDefined
+ if (contains) {
+ sys.error("Found " + search + " in " + filename)
+ }
+ contains
+}
diff --git a/src/sbt-test/specific-files/directories/project/build.properties b/src/sbt-test/specific-files/directories/project/build.properties
new file mode 100644
index 0000000..0974fce
--- /dev/null
+++ b/src/sbt-test/specific-files/directories/project/build.properties
@@ -0,0 +1 @@
+sbt.version=0.13.0
diff --git a/src/sbt-test/specific-files/directories/project/plugins.sbt b/src/sbt-test/specific-files/directories/project/plugins.sbt
new file mode 100644
index 0000000..1061e94
--- /dev/null
+++ b/src/sbt-test/specific-files/directories/project/plugins.sbt
@@ -0,0 +1,9 @@
+resolvers += "sonatype-snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/"
+
+{
+ val pluginVersion = System.getProperty("plugin.version")
+ if(pluginVersion == null)
+ throw new RuntimeException("""|The system property 'plugin.version' is not defined.
+ |Specify this property using the scriptedLaunchOpts -D.""".stripMargin)
+ else addSbtPlugin("org.scalastyle" % "scalastyle-sbt-plugin" % pluginVersion)
+}
diff --git a/src/sbt-test/specific-files/directories/scalastyle-config.xml b/src/sbt-test/specific-files/directories/scalastyle-config.xml
new file mode 100644
index 0000000..bd579b5
--- /dev/null
+++ b/src/sbt-test/specific-files/directories/scalastyle-config.xml
@@ -0,0 +1,13 @@
+
+ Scalastyle standard configuration
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/sbt-test/specific-files/directories/src/main/scala/package1/Example.scala b/src/sbt-test/specific-files/directories/src/main/scala/package1/Example.scala
new file mode 100644
index 0000000..b9f72ca
--- /dev/null
+++ b/src/sbt-test/specific-files/directories/src/main/scala/package1/Example.scala
@@ -0,0 +1,5 @@
+class Example {
+ def hello(): Unit = {
+ println("hello")
+ }
+}
\ No newline at end of file
diff --git a/src/sbt-test/specific-files/directories/src/main/scala/package2/hello.scala b/src/sbt-test/specific-files/directories/src/main/scala/package2/hello.scala
new file mode 100644
index 0000000..3cb4df3
--- /dev/null
+++ b/src/sbt-test/specific-files/directories/src/main/scala/package2/hello.scala
@@ -0,0 +1,9 @@
+
+object Main extends App {
+ println("hello")
+}
+
+object foo {
+ println("hello")
+}
+
diff --git a/src/sbt-test/specific-files/directories/test b/src/sbt-test/specific-files/directories/test
new file mode 100644
index 0000000..b8ec223
--- /dev/null
+++ b/src/sbt-test/specific-files/directories/test
@@ -0,0 +1,4 @@
+# scalastyle on specific files
+> clean
+> scalastyle src/main/scala/package1
+> containsMessage
diff --git a/src/sbt-test/specific-files/files/build.sbt b/src/sbt-test/specific-files/files/build.sbt
new file mode 100644
index 0000000..bd2c59a
--- /dev/null
+++ b/src/sbt-test/specific-files/files/build.sbt
@@ -0,0 +1,16 @@
+version := "0.1"
+
+scalaVersion := "2.10.0"
+
+val containsMessage = taskKey[Boolean]("contains message")
+
+containsMessage := {
+ val search = "File length exceeds"
+ val filename = "target/scalastyle-result.xml"
+ val lines = sbt.IO.readLines(file(filename))
+ val contains = lines.find(s => s.contains(search)).isDefined
+ if (contains) {
+ sys.error("Found " + search + " in " + filename)
+ }
+ contains
+}
diff --git a/src/sbt-test/specific-files/files/project/build.properties b/src/sbt-test/specific-files/files/project/build.properties
new file mode 100644
index 0000000..0974fce
--- /dev/null
+++ b/src/sbt-test/specific-files/files/project/build.properties
@@ -0,0 +1 @@
+sbt.version=0.13.0
diff --git a/src/sbt-test/specific-files/files/project/plugins.sbt b/src/sbt-test/specific-files/files/project/plugins.sbt
new file mode 100644
index 0000000..1061e94
--- /dev/null
+++ b/src/sbt-test/specific-files/files/project/plugins.sbt
@@ -0,0 +1,9 @@
+resolvers += "sonatype-snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/"
+
+{
+ val pluginVersion = System.getProperty("plugin.version")
+ if(pluginVersion == null)
+ throw new RuntimeException("""|The system property 'plugin.version' is not defined.
+ |Specify this property using the scriptedLaunchOpts -D.""".stripMargin)
+ else addSbtPlugin("org.scalastyle" % "scalastyle-sbt-plugin" % pluginVersion)
+}
diff --git a/src/sbt-test/specific-files/files/scalastyle-config.xml b/src/sbt-test/specific-files/files/scalastyle-config.xml
new file mode 100644
index 0000000..bd579b5
--- /dev/null
+++ b/src/sbt-test/specific-files/files/scalastyle-config.xml
@@ -0,0 +1,13 @@
+
+ Scalastyle standard configuration
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/sbt-test/specific-files/files/src/main/scala/Example.scala b/src/sbt-test/specific-files/files/src/main/scala/Example.scala
new file mode 100644
index 0000000..b9f72ca
--- /dev/null
+++ b/src/sbt-test/specific-files/files/src/main/scala/Example.scala
@@ -0,0 +1,5 @@
+class Example {
+ def hello(): Unit = {
+ println("hello")
+ }
+}
\ No newline at end of file
diff --git a/src/sbt-test/specific-files/files/src/main/scala/hello.scala b/src/sbt-test/specific-files/files/src/main/scala/hello.scala
new file mode 100644
index 0000000..3cb4df3
--- /dev/null
+++ b/src/sbt-test/specific-files/files/src/main/scala/hello.scala
@@ -0,0 +1,9 @@
+
+object Main extends App {
+ println("hello")
+}
+
+object foo {
+ println("hello")
+}
+
diff --git a/src/sbt-test/specific-files/files/test b/src/sbt-test/specific-files/files/test
new file mode 100644
index 0000000..a6f292a
--- /dev/null
+++ b/src/sbt-test/specific-files/files/test
@@ -0,0 +1,4 @@
+# scalastyle on specific files
+> clean
+> scalastyle src/main/scala/Example.scala
+> containsMessage
diff --git a/src/sbt-test/specific-files/nonexistent-file/build.sbt b/src/sbt-test/specific-files/nonexistent-file/build.sbt
new file mode 100644
index 0000000..7a556d5
--- /dev/null
+++ b/src/sbt-test/specific-files/nonexistent-file/build.sbt
@@ -0,0 +1,16 @@
+version := "0.1"
+
+scalaVersion := "2.10.0"
+
+val containsMessage = taskKey[Boolean]("contains message")
+
+containsMessage := {
+ val search = "File length exceeds"
+ val filename = "target/scalastyle-result.xml"
+ val lines = sbt.IO.readLines(file(filename))
+ val contains = lines.find(s => s.contains(search)).isDefined
+ if (!contains) {
+ sys.error("Could not find " + search + " in " + filename)
+ }
+ contains
+}
diff --git a/src/sbt-test/specific-files/nonexistent-file/project/build.properties b/src/sbt-test/specific-files/nonexistent-file/project/build.properties
new file mode 100644
index 0000000..0974fce
--- /dev/null
+++ b/src/sbt-test/specific-files/nonexistent-file/project/build.properties
@@ -0,0 +1 @@
+sbt.version=0.13.0
diff --git a/src/sbt-test/specific-files/nonexistent-file/project/plugins.sbt b/src/sbt-test/specific-files/nonexistent-file/project/plugins.sbt
new file mode 100644
index 0000000..1061e94
--- /dev/null
+++ b/src/sbt-test/specific-files/nonexistent-file/project/plugins.sbt
@@ -0,0 +1,9 @@
+resolvers += "sonatype-snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/"
+
+{
+ val pluginVersion = System.getProperty("plugin.version")
+ if(pluginVersion == null)
+ throw new RuntimeException("""|The system property 'plugin.version' is not defined.
+ |Specify this property using the scriptedLaunchOpts -D.""".stripMargin)
+ else addSbtPlugin("org.scalastyle" % "scalastyle-sbt-plugin" % pluginVersion)
+}
diff --git a/src/sbt-test/specific-files/nonexistent-file/scalastyle-config.xml b/src/sbt-test/specific-files/nonexistent-file/scalastyle-config.xml
new file mode 100644
index 0000000..bd579b5
--- /dev/null
+++ b/src/sbt-test/specific-files/nonexistent-file/scalastyle-config.xml
@@ -0,0 +1,13 @@
+
+ Scalastyle standard configuration
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/sbt-test/specific-files/nonexistent-file/src/main/scala/Example.scala b/src/sbt-test/specific-files/nonexistent-file/src/main/scala/Example.scala
new file mode 100644
index 0000000..b9f72ca
--- /dev/null
+++ b/src/sbt-test/specific-files/nonexistent-file/src/main/scala/Example.scala
@@ -0,0 +1,5 @@
+class Example {
+ def hello(): Unit = {
+ println("hello")
+ }
+}
\ No newline at end of file
diff --git a/src/sbt-test/specific-files/nonexistent-file/src/main/scala/hello.scala b/src/sbt-test/specific-files/nonexistent-file/src/main/scala/hello.scala
new file mode 100644
index 0000000..3cb4df3
--- /dev/null
+++ b/src/sbt-test/specific-files/nonexistent-file/src/main/scala/hello.scala
@@ -0,0 +1,9 @@
+
+object Main extends App {
+ println("hello")
+}
+
+object foo {
+ println("hello")
+}
+
diff --git a/src/sbt-test/specific-files/nonexistent-file/test b/src/sbt-test/specific-files/nonexistent-file/test
new file mode 100644
index 0000000..760f84b
--- /dev/null
+++ b/src/sbt-test/specific-files/nonexistent-file/test
@@ -0,0 +1,5 @@
+# scalastyle on specific files
+> clean
+# simulated typo
+> scalastyle src/main/scala/Eaxmple.scala
+> containsMessage
diff --git a/src/sbt-test/test-config/scalastyle-config/build.sbt b/src/sbt-test/test-config/scalastyle-config/build.sbt
index 6104c6f..7ca23da 100644
--- a/src/sbt-test/test-config/scalastyle-config/build.sbt
+++ b/src/sbt-test/test-config/scalastyle-config/build.sbt
@@ -1,4 +1,4 @@
-(scalastyleConfig in Test) := file("alternative-config.xml")
+(scalastyleConfig in Test) := file("gggalternative-config.xml")
version := "0.1"