GoLand 2021.1 disponible, l'EDI de JetBrains prend en charge les nouvelles fonctionnalités de Go 1.16
et permet de générer et d'exécuter votre programme à distance via Docker, SSH et WSL 2

Comme pour la plupart de ses EDI basés sur sa plateforme IntelliJ, JetBrains a annoncé la sortie de la première mise à jour majeure de cette année pour GoLand, son EDI visant à fournir un environnement ergonomique pour le développement en Go. GoLand 2021.1 vous permet de générer et d'exécuter votre programme à distance via Docker, SSH et WSL 2, d'utiliser les fonctionnalités nouvellement prises en charge de Go 1.16, notamment //go:embed, de générer rapidement du code à partir de JSON et de traiter plus facilement les erreurs grâce à de nouveaux correctifs rapides. GoLand est plus qu'un simple EDI pour Go : en plus des fonctionnalités permettant de travailler avec le code Go, il apporte de nouvelles fonctionnalités pour JavaScript, TypeScript et les bases de données. Il y a encore bien d'autres nouveautés que nous présentons plus en détail dans la suite.

Run Targets

Dans GoLand 2021.1, vous pouvez développer sur votre machine, avec tout le code source disponible localement, et cibler des ordinateurs distants pour exécuter votre code. Actuellement, l'EDI prend en charge Docker, SSH et WSL 2 (sous-système Windows pour Linux). Dans Settings, cliquez sur Run | Manage Targets…, puis sur l'icône Add (+), et sélectionnez les cibles avec lesquelles vous souhaitez travailler. Après avoir terminé la configuration, vous devez spécifier la configuration d'exécution Run Configuration dans Run | Edit Configurations... et sélectionner la cible avec laquelle vous voulez travailler.


Go 1.16

Prise en charge de //go:embed

À partir de Go 1.16, vous pourrez intégrer des fichiers et des répertoires dans un binaire Go au moment du build. L'intégration fonctionne sur plusieurs types de variables : string, []byte, et embed.FS. Vous devez déclarer ces variables au niveau supérieur de votre paquet. Enfin, vous devez ajouter la directive //go:embed pour que l'intégration fonctionne.


GoLand fournit la mise en évidence syntaxique du code, la navigation depuis les références à l'intérieur de la directive embed vers les fichiers et les dossiers de votre projet, la refactorisation Rename, Find Usages, la saisie semi-automatique du code et plusieurs inspections de code. Par exemple, GoLand vous avertira si vous essayez d'intégrer des fichiers dans une variable du mauvais type.

Détection des utilisations incorrectes de (t/b).Fatal

GoLand vous avertit des appels non valides de la méthode testing.T Fatal au sein d'une goroutine créée pendant le test. Le correctif rapide dédié réécrira le code appelant t.Fatal (ou une méthode similaire) afin qu'il signale l'échec du test avec t.Error et quitte la goroutine de manière anticipée à l'aide d'une instruction return.


Détection des utilisations incorrectes de asn1.Unmarshal

Dans Go 1.16, go vet détecte les utilisations incorrectes de asn1.Unmarshal, en s'assurant que la valeur dans laquelle une tranche d'octets est unmarshallée n'est pas nulle. GoLand 2021.1 fournit une vérification similaire avec un correctif rapide pour résoudre ce problème.


Travailler avec JSON

Vous pouvez générer un struct avec des champs et des balises à partir de JSON en un rien de temps, en copiant-collant simplement les données JSON dans l'éditeur. Si vous souhaitez ajuster le JSON avant de générer un struct, appuyez sur Alt+Entrée pour appeler l'intention Generate type from JSON. GoLand ouvrira la fenêtre Generate Go type from JSON avec le JSON copié. Vous pouvez l'ajuster comme vous le souhaitez dans la fenêtre. Appuyez ensuite sur le bouton Generate : votre struct est prêt. Bien entendu, il est également possible de coller manuellement le JSON dans la fenêtre.

Il est également possible de convertir le JSON à l'intérieur d'un struct vide déjà existant. Pour ce faire, il suffit de cliquer sur ce struct vide et d'appeler l'action d'intention Generate struct fields from JSON en appuyant sur Alt+Entrée ou via le menu Generate. En outre, GoLand vous avertira si le code JSON utilisé dans la fenêtre Generate Go type from JSON n'est pas valide.


Il est bien plus facile désormais de créer des balises JSON et XML pour tous les champs exportés du struct. Si vous utilisez Alt+Entrée pour appeler Add key to tags sur le struct ou sur l'un de ses champs, GoLand ajoute une balise à tous les champs du struct comportant un nom de champ. Si vous souhaitez modifier le style du nom du champ pour toutes les balises, appuyez à nouveau sur Alt+Entrée sur n'importe quelle clé et choisissez Change field name style in tags. Les styles nomChamp, NomChamp, nom-champ et nom_champ sont pris en charge.

Vous pouvez actualiser toutes les valeurs des balises en une seule fois avec l'action d'intention Update key value in tags. Appuyez sur Alt+Entrée sur n'importe quelle valeur de balise dans votre struct et GoLand ajoutera des carets à la fin des valeurs de balise dans chaque champ. De plus, l'EDI propose une saisie semi-automatique pour les jetons connus à l'intérieur des valeurs de balises fournies par le SDK pour le code JSON, XML et ASN.1.


Enfin, GoLand 2021.1 prend en charge le format JSON Lines délimité par de nouvelles lignes, utilisé pour travailler avec des journaux et des données structurées. L’EDI reconnaît les types de fichiers .jsonl, .jslines, .ldjson et .ndjson. Dans ce format, les fichiers contiennent plusieurs lignes et chaque nouvelle ligne est un objet JSON séparé par un caractère de nouvelle ligne. Les virgules ne sont pas requises au début ni à la fin des lignes et il n'est pas non plus nécessaire de placer l'intégralité du contenu du fichier entre crochets ou accolades.


Gérer facilement les erreurs

JetBrains a ajouté toute une gamme de correctifs rapides à l'inspection de code Unhandled Error :

  • le correctif rapide Handle error affecte les résultats des appels aux variables et génère une vérification if error not nil ;
  • le correctif rapide Wrap error handling in a closure, qui est disponible pour les instructions defer et go, produit un code similaire à Handle error mais enveloppe tout dans des accolades ;
  • JetBrains a étendu le domaine d'application d'Ignore explicitly pour inclure les déclarations defer et go. Le correctif rapide consiste à affecter les résultats de l'appel à des variables vierges et à envelopper le tout dans des accolades.


Autres correctifs rapides

Correctif rapide pour l'incompatibilité de type dans les littéraux composites

JetBrains a élargi le champ d'application du correctif rapide qui traite l'incompatibilité de type. Il suggère désormais d'implémenter une interface et de convertir vers le type attendu dans les littéraux composites également.

Le correctif rapide Create Type génère les champs manquants

Non seulement le correctif rapide Create Type propose de créer un type lorsque GoLand remarque que vous en utilisez un qui n'a pas encore été défini, mais il crée également des champs pour vous.

Générer tous les getters et setters en une fois

Générer les méthodes get et set pour chaque champ dans d'énormes structs peut être assez fastidieux. Vous pouvez maintenant les générer pour l'ensemble du struct en une seule fois. Appuyez sur Alt+Entrée sur un nom de champ du struct, puis choisissez Generate getter and setters dans le menu déroulant. GoLand ouvrira la fenêtre Select Fields, dans laquelle vous pourrez générer des méthodes get et set pour tous les champs ou seulement pour ceux dont vous avez besoin.


Refactorisations

Refactorisation Extract Type

La refactorisation Extract Type vous permet d'extraire un type à partir d'un type existant ou de convertir un type de structure anonyme en un type nommé. Appuyez sur Ctrl+Alt+Maj+T pour l'appeler.


Refactorisation Rename pour le fichier go.mod

Il est parfois nécessaire de renommer un module une fois que vous avez suffisamment avancé sur le projet et terminé tout le travail initial. JetBrains a donc ajouté la refactorisation Rename au fichier go.mod. Elle vous permet de renommer le module en toute sécurité, sans devoir effectuer une recherche et un remplacement dans l'arborescence du projet pour remplacer l'ancien nom du module.

Appelez la refactorisation Rename sur le nom du module avec Maj+F6. GoLand ouvrira la fenêtre Rename, dans laquelle vous pourrez modifier le nom actuel, choisir de le modifier ou non dans les commentaires et les chaînes de caractères, et prévisualiser les résultats de la refactorisation. Depuis l'onglet Refactoring Preview, vous pouvez naviguer vers toutes les occurrences de ce nom de module. Vous pouvez utiliser « undo » pour annuler rapidement toutes les modifications apportées par la refactorisation.


Saisie semi-automatique pour Postfix

On note ici une nouvelle saisie semi-automatique Postfix varCheckError. Tapez .varCheckError après un identifiant qui renvoie une erreur et l'EDI ajoutera automatiquement des noms de variables par défaut et renverra l'erreur à partir de la fonction.


Mise en forme

L'outil de mise en forme intégré peut désormais regrouper les importations de la même manière que goimports -local. Pour cela, rendez-vous dans Settings | Editor | Code Style | Go | Imports et activez le regroupement des importations. Vous pouvez ensuite préciser quelles importations doivent être regroupées dans des blocs distincts.

Exécuter et Déboguer

GoLand 2021.1 vous permet d'exécuter une session sudo étendue. Lors de la première exécution, GoLand vous demandera si vous souhaitez maintenir l'exécution de sudo ou l'arrêter immédiatement. Si vous souhaitez modifier votre réponse, cliquez sur Settings | Appearance & Behavior | System Settings | Process Elevation. Notez qu'en activant cette option, vous donner accès à votre système à GoLand et à l'ensemble des plugins tiers.

Saisie du code

JetBrains a activé la saisie semi-automatique par machine learning. Ce changement marque les premières heures de la saisie semi-automatique du code basée sur l'apprentissage automatique (ML), qui est une alternative au mécanisme de classement standard.

Améliorations de l'interface utilisateur

Menu Accès rapide

Le widget Configuration, auparavant situé en bas à gauche de l'EDI, a été remplacé par un menu accès rapide. Ce nouveau menu s'affiche en haut à droite. Appuyez sur l'icône d'engrenage pour changer de thème ou de modèle de clavier, naviguer vers des plugins ou accéder aux paramètres.


Accès rapide aux projets récents sous Windows depuis le menu « Démarrer »

Vous pouvez désormais accéder à vos projets récents en cliquant droit sur l'icône GoLand dans la barre des tâches ou dans le menu Démarrer de Windows.

Affichage des infobulles amélioré

Les infobulles s'affichent maintenant les unes après les autres pour empêcher leur chevauchement.

Variantes de police de caractères

Vous pouvez désormais sélectionner les variantes de police dans le volet Settings | Editor | Font.

Autres changements

Aperçu HTML intégré

JetBrains a ajouté un nouvel aperçu de navigateur intégré pour prévisualiser rapidement les fichiers HTML. Toute modification apportée aux fichiers HTML dans l'EDI, ainsi que dans les fichiers CSS et JavaScript associés, sera immédiatement enregistrée et l'aperçu sera instantanément mis à jour. Pour ouvrir l'aperçu, cliquez sur le logo GoLand dans le widget situé en haut à droite de l’éditeur.


Agrandir les onglets de l'éditeur dans la vue fractionnée

Vous travaillez sur plusieurs fichiers simultanément dans un éditeur fractionné et vous avez besoin de plus d'espace ? Double-cliquez sur l'onglet avec lequel vous travaillez pour agrandir la fenêtre de l'éditeur correspondante. Pour ramener cet onglet à sa taille initiale, il vous suffit de double-cliquer à nouveau dessus.


Le plugin Makefile Language fonctionne par défaut

Le plugin Makefile Language (auparavant un plugin tiers), qui permet la prise en charge du langage GNU Make, est maintenant intégré par défaut. À partir de GoLand 2021.1, vous bénéficierez automatiquement de la mise en évidence de la syntaxe, de la documentation rapide, de la fonctionnalité Find Usages pour les cibles et de diverses actions de navigation et de saisie semi-automatique du code pour Makefile.

Code With Me

Code With Me, un nouveau service de JetBrains pour le développement collaboratif et la programmation en binôme à distance, est désormais intégré à GoLand. Vous pouvez définir les conditions d'accès pour votre projet et partagez le lien avec vos invité·es. Vos pairs n'ont même pas besoin d'avoir installé leur propre EDI pour collaborer avec vous. Les appels audio et vidéo intégrés et la messagerie instantanée permettent aux équipes de discuter du code, de partager des connaissances et de coopérer plus efficacement. Pour les entreprises recherchant plus de sécurité, Code With Me on-premises peut être installé et fonctionner en toute sécurité sur leur réseau privé.


Docker

Configurations Run/Debug améliorées

JetBrains a apporté plusieurs améliorations à la boîte de dialogue Run/Debug Configuration. Par exemple, pour ajouter toutes les options de build nécessaires, cliquez sur Modify options. Pour ajouter des options d'exécution, cliquez sur Modify. L'EDI valide maintenant chaque option pour s'assurer qu'elle est compatible.

Pour Docker Compose, GoLand prend en charge toutes les options existantes, notamment l'option de déclaration des fichiers de variables d'environnement (.env). Pour les fichiers Dockerfile, vous n'avez pas besoin de vous souvenir de toutes les commandes d'exécution car la saisie semi-automatique du code fonctionne dans le champ Run Options. Pour les Images Docker, vous pouvez utiliser la saisie semi-automatique du code afin d'indiquer le nom de l'image dans le champ Image ID ou dans le champ name.

Prise en charge de BuildKit

JetBrains inaugure une prise en charge expérimentale pour BuildKit, qui accélère considérablement la construction des projets. Vous pouvez activer cette option dans Run/Debug Configurations en cliquant sur Modify options puis en cochant Enable BuildKit (experimental). Il vous suffit de cliquer sur l'icône de marteau à côté du nom de l'étape et l'EDI génèrera l'image à l'aide de BuildKit. Si vous ajoutez la section Run dans Run/Debug Configurations, l'icône changera. En cliquant dessus, non seulement vous génèrerez une image, mais vous exécuterez aussi un conteneur.


Améliorations de l'interface utilisateur dans les Dockerfiles à plusieurs étapes

Si vous utilisez plusieurs instructions FROM dans votre Dockerfile, chaque instruction FROM débute un nouvel étage. Dans GoLand 2021.1, vous pouvez désormais plier les étapes, qui seront alors distinctement séparées par une ligne.

Annuler l'exécution de Docker

Si vous décidez d'arrêter un Dockerfile en cours d'exécution, vous pouvez tout simplement le faire dans la fenêtre d'outils Services. Sélectionnez l'élément en cours d'exécution, appelez le menu contextuel et cliquez sur Stop Deploy.

Variables d'environnement et macros pour les montages Docker

Lors de l'utilisation de Bind mounts, vous pouvez désormais saisir plus rapidement un chemin d'accès à un répertoire sur la machine hôte. Le mécanisme de saisie semi-automatique vous permet de sélectionner les macros et les variables d'environnement pour l'option Bind mount dans Run/Debug Configurations.

Saisie semi-automatique des images dans les Dockerfiles

Dernier ajout, mais non des moindres : la saisie semi-automatique pour les noms d'image.

Développement web

Documentation MDN intégrée

La documentation MDN est maintenant intégrée à GoLand. Cela permettra d'éviter les problèmes de connectivité avec le site Web de MDN et d'accélérer l'affichage de la documentation intégrée à l'éditeur dans vos fichiers HTML, CSS et JavaScript. La documentation intégrée à l'éditeur sera également plus complète. Par exemple, des détails sur les versions de navigateur prises en charge pour les API JavaScript s'affichent désormais.

Amélioration de la prise en charge de Stylelint

Il est maintenant plus facile d'inspecter votre code CSS avec Stylelint. Vous pouvez désormais corriger les problèmes avec ce linter populaire en quelques clics. Survolez un problème dans votre fichier ou placez le curseur dessus et appuyez sur Alt+Entrée, puis sélectionnez Stylelint: Fix current file.

Par ailleurs, vous pouvez désormais spécifier un chemin d'accès au fichier de configuration sous le champ correspondant dans Settings | Languages & Frameworks | Style Sheets | Stylelint.


Spécificité des sélecteurs pour CSS

Lorsque vous travaillez avec des feuilles de style, vous pouvez désormais vérifier la spécificité de vos sélecteurs – il vous suffit de passer le curseur sur le sélecteur que vous voulez vérifier. Vous pouvez également cliquer sur un sélecteur et appuyer sur Ctrl+Q pour voir ces informations dans la fenêtre contextuelle Documentation.

Travailler avec des bases de données

Amélioration du tri

JetBrains a amélioré le tri des données. Un nouveau champ ORDER BY fonctionne de manière similaire au champ WHERE (qui s'appelait Filter auparavant) : entrez une clause fonctionnelle afin qu'elle soit appliquée à la requête du tableau. Notez également que le tri n'est pas "empilé" par défaut. Cela signifie que si vous cliquez sur le nom d'une colonne pour trier les données, le tri basé sur les autres colonnes sera supprimé. Si vous préférez utiliser le tri empilé, cliquez sur le nom d'une colonne tout en appuyant sur la touche Alt.

En outre, si vous souhaitez utiliser le tri du côté client (GoLand ne réexécutera pas la requête et ne triera pas les données dans la page actuelle), décochez Sort via ORDER BY. Il est également possible d'ouvrir des tables avec un tri prédéfini appliqué à la clé primaire numérique.

Modèles dynamiques contextuels

C'est la solution que propose JetBrains pour tous ceux qui souhaitent générer des instructions simples directement depuis l'explorateur de base de données. Les modèles dynamiques généraux couvrent de nombreux cas dans lesquels vous devez rédiger rapidement une requête simple. Mais JetBrains comprend aussi que lorsque vous êtes dans le contexte de l'explorateur de base de données et que vous vous concentrez déjà sur l'objet dont vous avez besoin, il peut y avoir une meilleure façon d'obtenir une requête simple utilisant cet objet.

Select first N rows from a table ressemble à un modèle général (et peut être utilisé comme tel). Comme cette syntaxe spécifique ne peut pas être utilisée dans toutes les bases de données, les dialectes correspondants sont définis pour le modèle. La principale différence qui permet d'appliquer ce modèle dans l'explorateur de base de données est l'expression spéciale dbObjectName, utilisée pour la variable $table$.

Interface Utilisateur pour les autorisations

JetBrains a ajouté une interface utilisateur pour l'édition des autorisations lors de la modification des objets. La fenêtre Modify user, que vous pouvez appeler sur un utilisateur dans l'explorateur de base de données avec Ctrl+F6, dispose désormais d'une interface utilisateur pour ajouter des autorisations aux objets. Ceci est disponible pour PostgreSQL, Redshift, Greenplum, MySQL, MariaDB, DB2, SQL Server et Sybase.


Nouveautés et téléchargement de GoLand 2021.1