Konfigurieren von VSCode für die Arbeit mit Scala


Der Artikel richtet sich an Anfänger in der Programmierung in Scala, die ich selbst bin, und nur an diejenigen, die anfangen möchten, Programmcode in VSCode zu schreiben.

Zufällig war dieses Video auf dem YouTube-Kanal von DevInsideYou die einzige Anleitung zur Arbeit mit Scala in Visial Studio Code. Es beschreibt ausführlich den Prozess der Installation und Einrichtung der Umgebung für VS Code und Sublime Text.

Dieser Artikel ist eine Adaption des Videos mit einigen Ergänzungen von mir. Sie können sich das Video ansehen oder diesen Artikel weiter lesen (oder beides tun). In diesem Fall hoffe ich, dass es für Sie nützlich ist.

Installation


Als erstes müssen wir Scalu selbst sowie das SBT- Projekt-Build-System installieren, sofern Sie dies noch nicht getan haben.


Für die Arbeit mit Scala in VSCode gibt es eine Metals- Erweiterung.

Metalleigenschaften


  • Genaue Diagnose beim Speichern:
  • Übergang zur Definition und zum Hover-Hilfe-Popup:
  • Typdefinition:
  • Automatische Vervollständigung beim Wählen:

Hier sind nur die grundlegenden Funktionen aufgeführt. Eine ausführlichere Beschreibung finden Sie in der Dokumentation .

Das Folgende ist ein Ausschnitt aus einem DevInsideYou-Video, das zeigt, wie Scala mit Code-Editoren interagiert:


Sprachserverprotokoll - Wird zwischen dem Client-Tool (IDE) und Servern verwendet, die für eine Programmiersprache spezifische Funktionen bereitstellen (automatische Vervollständigung, Übergang zur Definition usw.).

Metalle = Meta (von Scalameta) + LS (von Language Server - das Standardprotokoll für Sprachserver).

LSP reduziert die Komplexität von m-mal-n, indem es ein hohes Maß an Unterstützung für jede Programmiersprache in jedem Editor, jeder IDE oder jedem Client-Endpunkt für die einfachere m-plus-n-Aufgabe bietet. LSP wurde von Microsoft erstellt, um eine gemeinsame Sprache zu definieren, die Programmiersprachenanalysatoren sprechen können. Microsoft Visual Studio Code unterstützt dieses Protokoll sofort.

Mit LSP können sich Sprachgemeinschaften auf einen leistungsstarken Sprachserver konzentrieren, der Code-Vervollständigung, Tooltips, Definition, Suche nach Links und vieles mehr bietet, während sich Redakteure und Client-Communities auf die Erstellung eines einzigen, leistungsstarken und intuitiven Benutzers konzentrieren können und eine idiomatische Erweiterung, die mit jedem Sprachserver kommunizieren kann, um sofort umfassende Sprachunterstützung zu bieten.

Projektinitialisierung


1 Weg


Initialisierung über Scala-Datei . Öffnen Sie dazu den Projektordner und erstellen Sie darin die folgende Standardstruktur:


Beispielausgabe nach dem ersten Start von Metals:



2 Wege


Der zweite Weg beinhaltet die Verwendung von Mühle . Erstellen Sie dazu die Datei build.sc im Projektordner und öffnen Sie sie.

Beispielausgabe nach dem ersten Start von Metals:


3 Wege (endgültig)


Initialisierung mit SBT . Erstellen Sie im Projektordner eine build.sbt- Datei mit folgendem Inhalt:

name := "scala-vscode-example" version := "0.1" scalaVersion := "2.13.1" triggeredMessage := Watched.clearWhenTriggered autoStartServer := false scalacOptions ++= Seq( "-feature", "-deprecation", "-language:implicitConversions", "-language:higherKinds" ) addCompilerPlugin("org.typelevel" %% "kind-projector" % "0.10.3") 

Beispielausgabe nach dem ersten Start von Metals:


Wenn Metals einen sbt-Arbeitsbereich erkennt, für den es keine project / build.properties gibt , wird eine Popup-Benachrichtigung angezeigt, in der empfohlen wird, auf 0.13.7 zu aktualisieren:


Sie empfehlen die Verwendung von sbt Version 1.2.8. Nehmen Sie zum Ändern der sbt-Version die folgenden Änderungen an der Datei project / build.properties vor :


Verwenden Sie den folgenden Befehl, um die sbt-Version zu überprüfen:

 $ sbt sbtVersion 

Wir initialisieren die sbt-Arbeitsumgebung im Projektordner:

 $ sbt 

Projekt importieren


Um das Projekt zu importieren, klicken Sie in der angezeigten Benachrichtigung auf die Schaltfläche Build erstellen importieren oder geben Sie den folgenden Befehl ein:


Nachdem Sie Änderungen an einer Scala vorgenommen haben, wird diese automatisch von der Metals-Datei kompiliert:


Doktor


Wird verwendet, um potenzielle Probleme bei der Build-Konfiguration zu beheben. So starten Sie die Verwendung:


Fazit:


Bloop


Bloop ist ein Build-Server und CLI-Tool für Scala, das mit SBT zusammenarbeitet und experimentelle Unterstützung für andere Build-Tools wie Maven , Gradle und Mill bietet . Wenn Ihr Arbeitsbereich ein .bloop- Verzeichnis mit Bloop-JSON-Dateien enthält, stellt Metals automatisch eine Verbindung her.

Vorteile von Bloop:

  • Kompiliert, testet und führt Scala-Code so schnell wie möglich aus. Die Kompilierung erfolgt automatisch, wenn der Quellcode geändert wird. Das Starten und Testen des Programms erfordert keine erneute Kompilierung.
  • Einfache Integration in Build-Tools, Befehlszeilenanwendungen, Editoren und benutzerdefinierte Tools.
  • Es wird separat von der IDE gestartet, hängt also nicht von der Fertigstellung oder dem Neustart ab.
  • Dies beschleunigt das Öffnen des Projekts, da Metals den integrierten Server nicht für Sie ausführen muss.

Der folgende Ausschnitt aus dem Video „Glückliches Leben mit Scala-Metallen“ zeigt den Prozess der Erstellung der Anwendung:


Hinweis : Die Abbildung enthält einige Ungenauigkeiten. Gabriele Petronella verweist in seinem Kommentar unter dem Video auf sie:
In der Abbildung sind die unteren BSP-Pfeile technisch falsch. Wie Sie (richtig) betont haben, kann das Build-Tool, wenn es BSP spricht, direkt in Metalle integriert werden, ohne Bloop zu durchlaufen. Der Wechsel von einem Build-Tool zu einem Bloop ist eine Möglichkeit, dem Build-Tool selbst eine BSP-Integration hinzuzufügen. Dies ist ein besonderer Schritt, bei dem BSP nicht verwendet wird. Weitere Informationen finden Sie hier .
Bloop lässt sich in IDEs und Texteditoren integrieren und bietet eine kurze Rückkopplungsschleife und eine zuverlässige Compilerdiagnose.

Bloop wird in Metallen auf zwei Arten verwendet:
  1. Wenn Bloop auf Ihrem Computer installiert ist, stellt Metals einfach eine Verbindung zu einem vorhandenen Build-Server her (empfohlen).
  2. Wenn Bloop nicht installiert ist, lädt der Metalserver es herunter und führt es im einheitlichen Modus aus.

SemanticDB ist ein Datenmodell für semantische Informationen wie Zeichen und Typen über Programme in Scala und anderen Sprachen. Nach dem Kompilieren des Projekts sendet sbt-metal die Informationen an die lokale semanticdb-scala-Datenbank.

Bloop Installation


Laden Sie zunächst die neueste Version herunter:

 $ curl -L https://github.com/scalacenter/bloop/releases/download/v1.3.2/install.py | python 

Als Nächstes müssen Sie eine Kopie des Bloop-Dienstes für den aktuellen Benutzer erstellen:

 $ cp ~/.bloop/systemd/bloop.service ~/.config/systemd/user/ 

Um den Pfad zum Skript nicht ständig zu schreiben, können Sie bloop auch nach / usr / bin kopieren:

 $ sudo cp /.bloop/bloop /usr/bin/ 

Starten Sie den systemctl-Daemon neu:

 $ systemctl --user daemon-reload 

Hinzufügen eines Bloop zum Start:

 $ systemctl --user enable bloop 

Wenn Sie jedoch nicht ständig mit Scala arbeiten, empfehle ich nicht, diesen Dienst vom Start zu entfernen. Sie können die automatische Ausführung mit dem folgenden Befehl deaktivieren:

 $ systemctl --user disable bloop 

Running Bloop:

 $ systemctl --user start bloop 

Informationen zur aktuellen Verbindung anzeigen:



Anwendungsstart


Wenn der Bloop-Dienst ausgeführt wird, können Sie Ihr kompiliertes Programm mit diesem Befehl im Projektverzeichnis ausführen:

 $ bloop run <proj-name> 

Sie können ~ / .config / Code / User / keybindings.json auch einen Hotkey hinzufügen:

  {    "key": "meta+r",    "command": "workbench.action.terminal.sendSequence",    "args": {      "text": "bloop run ${workspaceFolderBasename}\u000D"    } } 

Wenn kein Bloop-Dienst ausgeführt wird, können Sie die Anwendung direkt über sbt starten. In diesem Fall wird die Anwendung jedoch jedes Mal neu kompiliert, was sich auf den Start des Programms auswirkt:

 $ sbt run 

Ausgangsdaten


Ein kleiner Testfall eines Scala-Projekts liegt in diesem Repository auf Github. Wenn Sie Ihre Projekte auch behalten möchten , müssen Sie der .gitignore- Datei die folgende Liste von Ausnahmen hinzufügen :

 *.class *.log project/ target/ .bloop/ .metals/ 

Source: https://habr.com/ru/post/de469707/


All Articles