Wie kann ich eine separate sbt-Konfiguration oder Aufgabe erstellen, um mit WartRemover zu kompilieren?

8

WartRemover ist ein Scalac-Plugin. In der Regel wird es über ein sbt-Plugin konfiguriert .

Ich möchte WartRemover in meinem sbt-Projekt als separate Konfiguration oder Task ausführen können, ohne die normale Ausführung von compile zu beeinträchtigen.

Nachdem ich Warentremover zu meinem plugins.sbt hinzugefügt habe, habe ich einige Varianten ausprobiert.

%Vor%

Danach enthielt scalacOptions ungefähr das, was ich in meiner neuen lint -Konfiguration und in der compile -Konfiguration erwartet hatte. Wenn ich jedoch lint:compile und compile mit sbt im Debug-Modus laufen ließ, konnte ich die Befehlszeilenargumente für scalac sehen, und beide oder keine Befehle würden die -P:wartremover:... -Schalter passieren lassen. Das war überraschend, denn nur lint:scalacOptions zeigte die -P:wartremover:... -Schalter.

Wie kann ich eine separate sbt-Konfiguration oder Aufgabe erstellen, die mit WartRemover kompiliert wird, ohne compile:compile zu beeinflussen?

    
Leif Wickland 19.12.2014, 23:06
quelle

1 Antwort

9

Ich glaube, Sie sind uns sehr nahe gekommen. Hier sind einige Details:

  1. sbt lädt Bibliotheksabhängigkeiten und Compiler-Plugins herunter, die alle Compile configuration update task verwenden, wobei libraryDependencies setting verwendet wird. addCompilerPlugin ist eine Abkürzung für libraryDependencies mit CompilerPlugin configuration.
  2. Das Compiler-Plugin benötigt scalaOptions für die Konfiguration, an der Sie interessiert sind.
  3. Sie müssen sources von Compile holen, um sie in Lint zu verwenden.

Wenn Sie die Implementierung von % sehen co_de% macht es sowohl wartremoverSettings als auch addCompilerPlugin . Sie haben zwei Möglichkeiten, Warentremover in scalacOptions zu deaktivieren:

  1. Verwenden Sie das automatische Plugin (benötigt sbt 0.13.5+), um Compile zu injizieren, und entfernen Sie dann manuell das Wartremover-Compiler-Plugin von wartremoverSettings .
  2. Deaktivieren Sie das automatische Plug-in und fügen Sie den Warzenentferner manuell in Compile .
  3. hinzu

Hier ist die erste Option.

project / build.properties

%Vor%

project / wart.sbt

%Vor%

build.sbt

%Vor%

foo / src / main / scala / Foo.scala

%Vor%

Beispielausgabe

%Vor%     
Eugene Yokota 24.12.2014, 02:45
quelle

Tags und Links