Closed fthomas closed 7 years ago
Pinging @adrian-wang since this is related to #41.
Note that scalastyleSources
can be overriden for the Compile
configuration like this:
(scalastyleSources in Compile) <++= unmanagedSourceDirectories in Compile
But doing the same for the Test
configuration has no effect.
Hi @fthomas , did you use
(scalastyleSources in Test) <++= unmanagedSourceDirectories in Compile
or
(scalastyleSources in Test) <++= unmanagedSourceDirectories in Test
?
I tried all of
(scalastyleSources in Test) <++= unmanagedSourceDirectories in Compile,
(scalastyleSources in Test) <++= unmanagedSourceDirectories in Test,
(scalastyleSources in Test) <++= unmanagedSourceDirectories in (Test, compile),
(scalastyleSources in (Test, compile)) <++= unmanagedSourceDirectories in Compile,
(scalastyleSources in (Test, compile)) <++= unmanagedSourceDirectories in Test,
(scalastyleSources in (Test, compile)) <++= unmanagedSourceDirectories in (Test, compile),
(scalastyleSources in (Test, scalastyle)) <++= unmanagedSourceDirectories in Compile,
(scalastyleSources in (Test, scalastyle)) <++= unmanagedSourceDirectories in Test,
(scalastyleSources in (Test, scalastyle)) <++= unmanagedSourceDirectories in (Test, compile),
but none of those had the desired effect.
In the sbt console test:unmanagedSourceDirectories
outputs the directories that should be added to test:scalastyleSources
.
This is unreasonable...
Indeed. Is there anything I could do to "debug" this?
One way we worked around this:
scalastyleSources in Compile <++= unmanagedSourceDirectories in Test,
This means that running sbt scalastyle
(no test:
) will also run scalastyle on the test folder.
Scalastyle is now an AutoPlugin, which may have changed behaviour slightly. Could you recheck this and see if there is still a problem, using 0.9.0-SNAPSHOT please?
@matthewfarwell I tried 0.9.0-SNAPSHOT but scalastyleSources
still contains only one directory:
[info] * /home/frank/data/code/refined/modules/core/jvm/src/main/scala
I don't understand the problem. I can do the following (using 0.9.0-SNAPSHOT, but as far as I'm aware this behaviour hasn't changed).
Add two directories and single file to scalastyleSources:
build.sbt:
name := "single"
version := "0.1.0"
scalastyleSources in Compile := Seq(
baseDirectory.value / "extra" / "foo",
baseDirectory.value / "extra" / "bar",
baseDirectory.value / "extra" / "Top.scala")
Use master scalastyle:
project/plugins.sbt:
resolvers += "sonatype-releases" at "https://oss.sonatype.org/content/repositories/snapshots/"
addSbtPlugin("org.scalastyle" % "scalastyle-sbt-plugin" % "0.9.0-SNAPSHOT")
Make sure the files exist:
$ mkdir extra extra/foo extra/bar
$ touch extra/Top.scala extra/foo/Foo.scala extra/bar/Bar.scala
And scalastyle processes in the output:
$ sbt scalastyle
[info] Loading project definition from /home/mfarwell/code/scalastyle/test/single/project
[info] Set current project to single (in build file:/home/mfarwell/code/scalastyle/test/single/)
[info] scalastyle using config /home/mfarwell/code/scalastyle/test/single/scalastyle-config.xml
[info] scalastyle Processed 3 file(s) <-------- **** PROCESSED THREE FILES ***
[info] scalastyle Found 0 errors
[info] scalastyle Found 0 warnings
[info] scalastyle Found 0 infos
[info] scalastyle Finished in 4 ms
[success] created output: /home/mfarwell/code/scalastyle/test/single/target
[success] Total time: 0 s, completed Apr 23, 2017 8:35:52 AM
@fthomas @adrian-wang Could you see if the behaviour has changed between 0.8.0 and 0.9.0, and if not, please tell me what the problem is, if indeed there is one. Thanks.
@matthewfarwell The problem still exists in 0.9.0. scalastyleSources
still contains only one source directory
> coreJVM/scalastyleSources
[info] * /home/frank/data/code/refined/modules/core/jvm/src/main/scala
instead of all relevant source directories for this project:
> coreJVM/unmanagedSourceDirectories
[info] * /home/frank/data/code/refined/modules/core/jvm/src/main/scala-2.12
[info] * /home/frank/data/code/refined/modules/core/jvm/src/main/scala
[info] * /home/frank/data/code/refined/modules/core/jvm/src/main/java
[info] * /home/frank/data/code/refined/modules/core/shared/src/main/scala-2.12
[info] * /home/frank/data/code/refined/modules/core/shared/src/main/scala
Since all my sources are in /home/frank/data/code/refined/modules/core/shared/src/main/scala
, scalastyle doesn't check any files.
The problem is not that I cannot change scalastyleSources
to contain the same directories as unmanagedSourceDirectories
(because we've done this at least in cats, circe, and refined) but that scalastyleSources
should contain the same directories as unmanagedSourceDirectories
by default. In a typical JVM / JS cross project it shouldn't be required to change scalastyleSources
.
BTW, I had similar issues with other plugins:
Can you try this with the snapshot and see if it works please?
Just tried 0.10.0-SNAPSHOT and it picks up all my source directories. Thanks @matthewfarwell!
In one of my projects Scalastyle 0.8.0 does not inspect all source files. The project is a JVM/JS cross project and has its sources in different directories (
shared/src/main/scala
,jvm/src/main/scala-2.10
,jvm/src/main/scala-2.11
, etc.). and it seems that Scalastyle only inspect files injvm/src/main/scala
becausescalastyleSources
only contains this directory:I suspect
scalastyleSources
should by default instead contain the same directories assourceDirectories
(orunmanagedSourceDirectories
):Btw, the same problem exists in Cats and circe.