Configuration de VSCode pour fonctionner avec Scala


L'article est destiné aux débutants en programmation en Scala, que je suis moi-même, et uniquement à ceux qui veulent commencer à écrire du code de programme dans VSCode.

Il se trouve que le seul guide pour travailler avec Scala dans Visial Studio Code était cette vidéo sur la chaîne YouTube DevInsideYou. Il décrit en détail le processus d'installation et de configuration de l'environnement pour VS Code et Sublime Text.

Cet article est une adaptation de la vidéo avec quelques ajouts de ma part. Vous pouvez aller regarder la vidéo ou continuer à lire cet article (ou faire les deux), auquel cas, j'espère que cela vous sera utile.

L'installation


La première chose que nous devons faire est d'installer Scalu lui-même, ainsi que le système de construction de projet SBT , si vous ne l'avez pas déjà fait.


Pour travailler avec Scala dans VSCode, il existe une extension Metals .

Caractéristiques des métaux


  • Diagnostic précis lors de l'enregistrement:
  • Transition vers la définition et le survol de l'aide:
  • Définition du type:
  • Complétion automatique lors de la numérotation:

Seules les fonctionnalités de base sont répertoriées ici, suivez la documentation pour une description plus détaillée.

Voici un extrait d'une vidéo DevInsideYou qui montre comment Scala interagit avec les éditeurs de code:


Protocole de serveur de langue - utilisé entre l'outil client (IDE) et les serveurs qui fournissent des fonctions spécifiques à un langage de programmation (auto-complétion, transition vers la définition, etc.).

Métaux = Meta (de Scalameta) + LS (de Language Server - le protocole de serveur de langue standard).

LSP réduit la complexité de m-times-n en fournissant un niveau élevé de prise en charge de tout langage de programmation dans n'importe quel éditeur, IDE ou point de terminaison client, à la tâche m-plus-n plus simple. LSP a été créé par Microsoft pour définir un langage commun que les analyseurs de langage de programmation peuvent parler. Microsoft Visual Studio Code prend en charge ce protocole prêt à l'emploi.

Le LSP permet aux communautés linguistiques de se concentrer sur un serveur linguistique haute performance, qui peut fournir la complétion de code, des info-bulles, aller à la définition, rechercher des liens et bien plus encore, tandis que les éditeurs et les communautés clientes peuvent se concentrer sur la création d'un seul, hautes performances et intuitif et une extension idiomatique qui peut communiquer avec n'importe quel serveur de langue pour fournir instantanément une prise en charge linguistique approfondie.

Initialisation du projet


1 voie


Initialisation via le fichier scala . Pour ce faire, ouvrez le dossier du projet et créez-y la structure par défaut suivante:


Exemple de sortie après le premier démarrage de Metals:



2 voies


La deuxième façon consiste à utiliser un moulin . Pour ce faire, créez le fichier build.sc dans le dossier du projet et ouvrez-le.

Exemple de sortie après le premier démarrage de Metals:


3 voies (final)


Initialisation avec SBT . Créez un fichier build.sbt dans le dossier du projet avec le contenu suivant:

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") 

Exemple de sortie après le premier démarrage de Metals:


Lorsque Metals détecte un espace de travail sbt pour lequel il n'y a pas de projet / build.properties , une notification contextuelle s'affiche vous recommandant de mettre à niveau vers 0.13.7:


Ils recommandent d'utiliser la version 1.2.8 de sbt. Pour modifier la version de sbt, apportez les modifications suivantes au fichier project / build.properties :


Pour vérifier la version de sbt, utilisez la commande:

 $ sbt sbtVersion 

Nous initialisons l'environnement de travail sbt dans le dossier du projet:

 $ sbt 

Importer un projet


Pour importer le projet, cliquez sur le bouton Importer le build dans la notification qui apparaît ou entrez la commande:


Après avoir modifié une scala, le fichier Metals le compilera automatiquement:


Docteur


Utilisé pour résoudre les problèmes potentiels de configuration de build. Pour commencer à utiliser:


Conclusion:


Bloop


Bloop est un serveur de build et un outil CLI pour Scala qui fonctionne avec SBT et a un support expérimental pour d'autres outils de build tels que Maven , Gradle et Mill . Si votre espace de travail contient un répertoire .bloop avec des fichiers JSON Bloop, Metals s'y connectera automatiquement.

Avantages de Bloop:

  • Compile, teste et exécute le code Scala le plus rapidement possible. La compilation se produit automatiquement lorsque le code source est modifié, le lancement et les tests du programme ne nécessitent pas de recompilation;
  • S'intègre facilement aux outils de génération, aux applications de ligne de commande, aux éditeurs et aux outils personnalisés;
  • Il démarre séparément de l'IDE, il ne dépend donc pas de son achèvement ou de son redémarrage;
  • Cela accélère l'ouverture du projet, car Metals n'a pas besoin d'exécuter le serveur intégré pour vous.

L'extrait suivant de la vidéo «Happy Life With Scala Metals» montre le processus de création de l'application:


Remarque : il y a quelques inexactitudes dans la figure. Gabriele Petronella les pointe dans son commentaire sous la vidéo:
Sur la figure, les flèches BSP inférieures sont techniquement incorrectes. Comme vous l'avez (correctement) souligné, si l'outil de construction parle BSP, il peut s'intégrer directement aux métaux sans passer par Bloop. Passer d'un outil de génération à un Bloop est un moyen d'ajouter l'intégration BSP à l'outil de génération lui-même, et c'est une étape spéciale qui n'utilise pas BSP. Plus d'informations peuvent être trouvées ici .
Bloop s'intègre aux IDE et aux éditeurs de texte, fournissant une courte boucle de rétroaction et des diagnostics fiables du compilateur.

Bloop est utilisé dans les métaux de deux manières possibles:
  1. Si Bloop est installé sur votre ordinateur, Metals se connectera simplement à un serveur de build existant (recommandé);
  2. Si Bloop n'est pas installé, le serveur Metals le téléchargera et l'exécutera en mode natif.

SemanticDB est un modèle de données pour les informations sémantiques, telles que les caractères et les types, sur les programmes en Scala et dans d'autres langues. Après avoir compilé le projet, sbt-métaux envoie les informations à la base de données locale semanticdb-scala.

Installation de Bloop


Pour commencer, téléchargez la dernière version :

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

Ensuite, vous devez créer une copie du service bloop pour l'utilisateur actuel:

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

De plus, afin de ne pas écrire constamment le chemin du script, vous pouvez copier bloop dans / usr / bin :

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

Redémarrez le démon systemctl:

 $ systemctl --user daemon-reload 

Ajout d'un bloop au démarrage:

 $ systemctl --user enable bloop 

Cependant, si vous ne travaillez pas constamment avec Scala, je ne recommande pas de supprimer ce service du démarrage. Vous pouvez désactiver l'exécution automatique avec la commande suivante:

 $ systemctl --user disable bloop 

Running bloop:

 $ systemctl --user start bloop 

Afficher des informations sur la connexion actuelle:



Lancement de l'application


Lorsque le service bloop est en cours d'exécution, vous pouvez exécuter votre programme compilé à l'aide de cette commande dans le répertoire du projet:

 $ bloop run <proj-name> 

Vous pouvez également ajouter un raccourci clavier à ~ / .config / Code / User / keybindings.json :

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

Si vous n'avez pas de service bloop en cours d'exécution, vous pouvez démarrer l'application directement via sbt, cependant, dans ce cas, l'application sera recompilée à chaque fois, ce qui affectera l'heure de démarrage du programme:

 $ sbt run 

Données source


Un petit cas de test d'un projet scala se trouve dans ce référentiel sur github. Si vous souhaitez également conserver vos projets, assurez-vous d'ajouter la liste d'exceptions suivante au fichier .gitignore :

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

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


All Articles