2016-06-04 13 views
7

Normalerweise verwende ich diese Reihe von Optionen für die Erstellung der Scala-Code:sbt: set spezifische scalacOptions Optionen, wenn Tests Kompilieren

scalacOptions ++= Seq(
    "-deprecation", 
    "-encoding", "UTF-8", 
    "-feature", 
    "-unchecked", 
    "-language:higherKinds", 
    "-language:implicitConversions", 
    "-Xfatal-warnings", 
    "-Xlint", 
    "-Yinline-warnings", 
    "-Yno-adapted-args", 
    "-Ywarn-dead-code", 
    "-Ywarn-numeric-widen", 
    "-Ywarn-value-discard", 
    "-Xfuture", 
    "-Ywarn-unused-import" 
) 

Aber einige von ihnen spielen nicht gut mit ScalaTest, so würde Ich mag -Ywarn-dead-code deaktivieren und -Ywarn-value-discard beim Kompilieren von Tests.

ich versuchte, indem Umfang wie diese

scalacOptions in Compile ++= Seq(...) 

oder

scalacOptions in (Compile, compile) ++= Seq(...) 

oder sogar

val ignoredInTestScalacOptions = Set(
    "-Ywarn-dead-code", 
    "-Ywarn-value-discard" 
) 

scalacOptions in Test ~= { defaultOptions => 
    defaultOptions filterNot ignoredInTestScalacOptions 
} 

aber die ersten beiden Sperroptionen normale Kompilierung Umfang als auch während des letzteren doesn Auswirkungen auf die Kompilierungsoptionen von Tests nicht.

Wie könnte ich eine separate Liste von Optionen beim Kompilieren von Tests haben?

Antwort

3

Hatte das gleiche Problem, @Mike Slinn Antwort funktionierte nicht für mich. Ich glaube, dass die Testoptionen die Kompilieroptionen erweitern? Was schließlich tat, war der Trick explizit ignoriert Optionen Test Entfernen

scalacOptions in Test --= Seq( "-Ywarn-dead-code", "-Ywarn-value-discard")

+1

Es funktioniert in sbt aber nicht in IntelliJ. Sieht so aus als wäre es Intellij Bug, also akzeptiere ich diese Antwort. – Tvaroh

+2

korrekt. Ich füllte ein Problem - https://youtrack.jetbrains.com/issue/SCL-11824 – LiorH

+0

Großartig, danke, ich war zu faul dafür. – Tvaroh

3

Warum nicht gemeinsame Optionen in einer Variablen definieren (die ich sopts aufgerufen habe), und andere Optionen in einer anderen Variablen (die ich soptsNoTest genannt)?

val sopts = Seq(
    "-deprecation", 
    "-encoding", "UTF-8", 
    "-feature", 
    "-target:jvm-1.8", 
    "-unchecked", 
    "-Ywarn-adapted-args", 
    "-Ywarn-numeric-widen", 
    "-Ywarn-unused", 
    "-Xfuture", 
    "-Xlint" 
) 
val soptsNoTest = Seq(
    "-Ywarn-dead-code", 
    "-Ywarn-value-discard" 
) 

scalacOptions in (Compile, doc) ++= sopts ++ soptsNoTest 
scalacOptions in Test ++= sopts 

Getestet mit SBT 0.13.13.

Da diese Frage so lange nicht beantwortet wurde und Scala 2.12 und 2.12.1 in der Zwischenzeit veröffentlicht wurden, habe ich die allgemeinen Optionen angepasst.

BTW, ich habe kein Problem mit ScalaTest mit den Schaltern, die Sie erwähnen. Ich habe diese Frage nur beantwortet, weil es interessant war.