2017-01-06 1 views
1

Alle anderen Fragen, die ich zu diesem Thema gefunden habe, sind ziemlich alt. Ich baue ein Scala-Projekt mit sbt und dem scala-style Plugin, aber ich finde keine Möglichkeit, einen bestimmten Ordner auszuschließen, wo ich etwas generierten Code habe.ohne Ordner von Scalastyle sbt Plugin

Gibt es eine Möglichkeit, das Plugin zu zwingen, diesen bestimmten Ordner nicht zu überprüfen?

Im Moment bin ich die Bearbeitung der Dateien manuell und fügt hinzu:

// scalastyle:off

am Anfang der Datei, aber das ist ziemlich ärgerlich.

In der offiziellen Website http://www.scalastyle.org/sbt.html konnte ich keine Dokumentation finden, obwohl es scheint, dass es tatsächlich möglich ist, Pfade/Dateien davon auszuschließen.

https://github.com/scalastyle/scalastyle/blob/e19b54eacb6502b47b1f84d7b2a6b5d33f3993bc/src/main/scala/org/scalastyle/Main.scala#L51

so scheint es, dass wir tatsächlich passieren kann:

println(" -x, --excludedFiles STRING  regular expressions to exclude file paths (delimitted by semicolons)") 

In meinem build.sbt Ich nenne:

lazy val compileScalastyle = taskKey[Unit]("compileScalastyle") 
compileScalastyle := org.scalastyle.sbt.ScalastylePlugin.scalastyle.in(Compile).toTask("").value 
(compile in Compile) <<= (compile in Compile) dependsOn compileScalastyle 

Gibt es eine Möglichkeit, dass mit der sbt plugin zu erreichen?

+0

Blick auf den [Quellcode] (https://github.com/scalastyle/scalastyle-sbt-plugin/blob/master/src/main/scala/org/ scalastyle/sbt/Plugin.scala # L112) sollten Sie "scalastyleSources in Compile" überschreiben. Standard ist der Ordner 'src/main/scala'. –

Antwort

1

Sie könnten alle Dateien/Verzeichnisse unter "src/main/scala" erhalten und Ihr Verzeichnis auszufiltern:

lazy val root = (project in file(".")). 
    settings(
    (scalastyleSources in Compile) := { 
     // all .scala files in "src/main/scala" 
     val scalaSourceFiles = ((scalaSource in Compile).value ** "*.scala").get  
     val fSep = java.io.File.separator // "/" or "\" 
     val dirNameToExclude = "com" + fSep + "folder_to_exclude" // "com/folder_to_exclude" 
     scalaSourceFiles.filterNot(_.getAbsolutePath.contains(dirNameToExclude)) 
    } 
) 

EDIT:
Ich habe eine "generische" Lösung gegeben, wo es überprüft den Pfad jeder auszuschließenden Datei ...

+0

seltsam, ich habe versucht, die Quellen innerhalb dort zu drucken, aber es druckt nur den ursprünglichen Namen eines Ordners unter 'src /' Ich drucke es als: 'scalaSourceFiles.foreach ((f: Datei) => println (" Name : "+ f.getName))' und es druckt nur 'com' für den Ordner' com.mystuff' –

+0

Dies geht nur eine Ebene tief ('listFiles()' Methode auf 'java.io.File'). Wenn Sie alle Dateien unter src haben wollen, gibt es sbt's Helfer wie '**' Methode, die Ihnen ** alle ** Dateien unter einem Ordner geben. Siehe [hier] (http://www.scala-sbt.org/1.0/docs/Paths.html#Selecting+descendants). Sehen Sie, wie Ihre Ordnerstruktur aussieht und erwünschte Dateien ausschließen ... –

+0

danke! Könnten Sie mir helfen, einen Ordner unter 'scala/folder1/folder_to_exclude' auszuschließen? Ich bin neu in Scala –

Verwandte Themen