Quels sont les meilleurs IDE Golang?

Go est un langage de programmation fantastique. Il vient également avec une chaîne d'outils complète. De nombreux développeurs n'utilisent que des éditeurs de texte brut avec ou sans plug-ins pour écrire du code Go, mais beaucoup préfèrent utiliser des IDE (environnements de développement intégrés) appropriés.. 

Dans ce tutoriel, vous en apprendrez plus sur l'état actuel des IDE Go et serez prêt à choisir votre arme..

Pourquoi utiliser un IDE?

J'ai toujours été un grand fan des IDE. Au début de ma carrière, j'ai utilisé Visual Studio pour le développement C / C ++ ainsi que C #. J'ai utilisé NetBeans pour un court passage en développement Java. J'ai utilisé PyCharm pour le développement Python de JetBrains et, aujourd'hui, j'utilise le développement Gogland for Go de JetBrains..

Je travaille généralement sur des systèmes logiciels à grande échelle constitués de plusieurs projets contenant des milliers de fichiers. J'ai besoin de beaucoup d'aide avec les grandes bases de code. Voici les principales raisons pour lesquelles j'aime tant les IDE:

Organisation intégrée du code et navigation

Avec un bon IDE, vous pouvez organiser votre code hiérarchiquement, l’afficher et le naviguer facilement, et également effectuer une recherche rapide dans votre code. L'EDI fera beaucoup plus que simplement rechercher du texte et vous permettra de filtrer en fonction de constructions spécifiques à la langue (par exemple, afficher uniquement les classes ou les interfaces portant un nom particulier)..

Test intégré

Les tests intégrés sont également cruciaux. Je passe le plus clair de mon temps de développement à effectuer des tests, que ce soit pour les écrire, pour les faire passer ou pour rechercher les raisons de l'échec soudain des tests. Un bon IDE avec des tests intégrés vous permettra d’exécuter des tests de manière sélective (un seul projet, tous les tests ayant échoué de la précédente), mettra en évidence les échecs et vous permettra de passer rapidement au bon endroit du code problème.

Débogage intégré 

C'est probablement la caractéristique la plus importante pour moi. J'adore les débogueurs intégrés. Je veux pouvoir ajouter un point d'arrêt (y compris des points d'arrêt conditionnels), afficher le tracé de la pile et afficher les variables à chaque image.. 

Pour les points bonus (merci PyCharm), j'aime bien avoir une session de console interactive lorsqu'un point d'arrêt frappe. Les alternatives de débogage printf (nécessite la modification du code et la reconstruction) ou la visualisation des fichiers journaux (souvent pas assez de granularité ou de bruit) sont beaucoup plus frustrantes et moins productives. Même les débogueurs autonomes tels que gdb n’atteignent pas la productivité d’un bon débogueur intégré.

Gogland

Gogland est mon IDE actuel de Golang. Il s'agit d'un produit très récent, dont la prévisualisation était encore avancée, mais je le considère toujours comme le plus complet et intégré de Go IDE. Il est construit sur la base solide de JetBrains, il est donc extrêmement robuste et complet..

Editeur de code et assistance

L'éditeur de code de Gogland est superbe. Voici certaines de ses capacités:

  • Interface à onglets
  • Achèvement du code intelligent
  • Inspections et solutions rapides
  • Refactorings
  • Navigation Rapide
  • Popups rapides pour la documentation, la définition, les usages, la structure, etc..
  • Génération de code (par exemple, interface d'implémentation)
  • Détecter les appels récursifs
  • Afficher le type d'une expression
  • Mise en surbrillance des points de sortie de fonction
  • Astuces de paramètres 

Débogueur

Le débogueur Gogland est excellent. Il est construit sur Delve, qui est utilisé par d'autres IDE que nous couvrons également. Il utilise les configurations de débogage JetBrains connues pour tout contrôler sur une exécution de débogage, tel que le binaire exécuté, les variables d'environnement, le répertoire de travail et les arguments de ligne de commande.. 

Vous pouvez définir des points d'arrêt, des points d'arrêt conditionnels et des surveillances. Lorsqu'un point d'arrêt est atteint, vous pouvez observer le tracé de la pile et les variables locales dans chaque image. Malheureusement, les variables globales ne sont pas affichées et sont souvent nécessaires dans Go.

J'ai eu un problème avec le débogueur où les points d'arrêt sont touchés prématurément! Considérez l'extrait suivant Go:

x: = 1 y: = 3 z: = x + y fmt.Println (z)

Parfois, si je mettais un point d'arrêt sur la dernière ligne, il y aurait un impact, mais la valeur de z serait 0, au lieu de 4. Comment cela peut-il être? Il s'avère que le débogueur est devenu confus d'une manière ou d'une autre. Si je continue à parcourir le code, il retournera à z: = x + y, affectez 4 à z, puis revenez à la dernière ligne et imprimez correctement 4 à l'écran. 

J'ai perdu quelques heures à essayer de déboguer un morceau de code compliqué, sans réaliser que je n'obtenais pas toujours la bonne image. Finalement, j'ai compris ce qui se passait et j'ai juste ignoré le faux déclenchement précoce des points d'arrêt.

Je ne sais pas si c'est un problème de Delve ou de Gogland, mais je suis sûr qu'ils vont le résoudre rapidement. Rappelez-vous que c'est juste un aperçu de l'accès anticipé.

Test Runner

Le lanceur de tests vous permet d'exécuter, d'arrêter et de relancer des tests. J'ai pu l'utiliser avec succès pour l'exécution et le débogage de tests unitaires, ainsi que de tests d'intégration à l'aide du progiciel de test Go et d'un framework de test BDD tel que ginkgo..

Allez les outils

Go est livré avec divers outils et Gogland les intègre directement dans l'IDE. Vous pouvez appeler n'importe quel outil à partir du menu "Code | Aller Outils". Le formatage de code intégré de Gogland utilise l’outil standard "go fmt".

Contrôle de version

Gogland hérite du système de gestion de contrôle de source mature des autres produits JetBrains. J'ai principalement utilisé le support git, qui permet la gestion de plusieurs projets, un excellent affichage des branches, plusieurs ensembles de modifications, etc. D'autres systèmes de contrôle de source tels que Mercurial et SVN sont également supportés, via des plugins supplémentaires.

Terminal intégré  

Gogland fournit un terminal intégré au cas où vous auriez besoin d'exécuter certaines commandes. C'est bien de rester dans l'EDI et de pouvoir regarder ou copier des volets d'éditeur sans changer de fenêtre complètement.

Extensibilité

Gogland est livré avec des tonnes de fonctionnalités intégrées, mais il est totalement extensible et de nombreuses fonctionnalités intégrées sont en fait des plugins préchargés. Vous pouvez installer de nombreux plugins utiles, et vous pouvez développer vos propres plugins si vous le souhaitez..

Code Visual Studio

Visual Studio Code est un éditeur de code à code source ouvert extensible développé principalement par Microsoft (avec de nombreuses contributions de la communauté). Il est basé sur Electron, qui à son tour est basé sur le chrome. Visual Studio Code prend en charge de nombreuses langues et se concentrait à l’origine sur le développement Web. Il prend fortement en charge le développement Go, y compris l'intégration de tous les outils Go et du débogueur Delve via une extension dédiée. Vous aurez besoin d'installer des paquets Go et des outils pour commencer.

Visual Studio Code propose également une intégration intégrée à git, un explorateur hiérarchique de dossiers / fichiers et une interface à onglets.

Le support IntelliSense (complétion automatique, affichage des types de paramètres et de la documentation) est excellent et offre une expérience de montage très agréable. Le débogueur intégré (utilise également Delve sous le capot) est très bien fait et correspond au débogueur de Gogland.

Visual Studio Code est très réactif et rapide. Voici sa liste de fonctionnalités substantielle:

  • Listes d'achèvement (en utilisant gocode)
  • Aide à la signature (avec gogetdoc ou godef + godoc)
  • Extraits
  • Info rapide (en utilisant gogetdoc ou godef + godoc)
  • Aller à la définition (en utilisant gogetdoc ou godef + godoc)
  • Trouver des références (en utilisant guru)
  • Références CodeLens
  • Contour de fichier (en utilisant go-outline)
  • Recherche de symboles dans l'espace de travail (à l'aide de symboles de navigation)
  • Renommer (en utilisant gorename. Remarque: pour que Annuler après renommer fonctionne sous Windows, vous devez avoir l’outil diff dans votre chemin.)
  • Build-on-save (en utilisant go build et go test)
  • Lint-on-save (en utilisant golint ou gometalinter)
  • Format (en utilisant goreturns ou goimports ou gofmt)
  • Générer un squelette de tests unitaires (à l'aide de gotests)
  • Ajouter des importations (à l'aide de gopkgs)
  • Ajouter / Supprimer des balises sur des champs de struct (en utilisant gomodifytags)
  • Signalement d'erreur sémantique / syntaxique lors de la frappe (avec gotype-live)
  • Exécuter les tests sous le curseur, dans le fichier en cours, dans le package en cours, dans tout l'espace de travail (à l'aide de go test)

LiteIDE

LiteIDE est très inhabituel. C'était le premier Go IDE sérieux, commencé en 2011/2012, et il continue toujours. Il s’agit d’une application C ++ Qt, d’apparence personnalisée. Semblable à Gogland et à Visual Studio Code, il utilise les outils Go et le débogueur Delve pour fournir des services linguistiques (bien qu'il ait commencé avec le débogueur gdb avant que Delve ne soit prêt).. 

Dans l’ensemble, c’est un IDE complet, mais il n’a pas l’air poli. Autant que je sache, c’est plutôt un effort à un homme, ce qui est extraordinaire. Voici un aperçu des fonctionnalités de LiteIDE.

CARACTERISTIQUES de base

  • Gestion de l'environnement système
  • Commandes de construction configurables
  • Système de débogage simple et ouvert (supporte à la fois gdb et Delve)
  • Format Kate pour l'auto-complétion et la thématisation
  • Saisie automatique configurable avec WordApi
  • Système basé sur le type MIME
  • Prise en charge du plugin
  • Ouverture rapide

Golang Support

  • Navigateur de paquets
  • Vue et contour de la classe
  • Navigateur de documents
  • Support de gocode
  • Index de l'API GOPATH
  • Code de navigation
  • Trouver des utilisations
  • Code refactor
  • Aller au terrain de jeu

Soutien supplémentaire

  • Réduction
  • JSON
  • Golang Present

Large

Wide est intéressant car il s'agit d'un IDE basé sur Internet dédié à Golang. Son objectif est le développement collaboratif et il est conçu pour les équipes. Le développeur est chinois et une grande partie de la documentation est en chinois. Il est donc possible qu'elle ne convienne pas à tout le monde. Ce n'est certainement pas à égalité avec les autres IDE en termes de fonctionnalités et d'intégration.

Go Plugins pour d'autres IDE

Il existe de nombreux IDE à usage général qui prennent en charge de nombreux langages de programmation et qui prennent également en charge le langage Go. Je ne suis pas un grand fan de tels environnements. Je crois qu'un environnement intégré doit avoir des crochets profondément intégrés spécifiques à la langue. Il est difficile à implémenter comme un simple plugin (même si vous pouvez dire que c'est exactement ce que fait le code de VS). 

Certains environnements de développement populaires qui ont ajouté le support Go sont:

  • Éclipse
  • Atome
  • Supports
  • Komodo
  • Cloud 9

Editeurs de texte

Go est un langage simple. Beaucoup de gens se sentent très productifs en utilisant simplement un éditeur de texte, éventuellement avec quelques plugins Go supplémentaires. Je ne considère pas ces environnements de développement vraiment intégrés. Cependant, si vous avez de nombreuses années d'expérience avec votre éditeur de texte, si vous l'avez déjà personnalisé à votre goût, vous l'utilisez pour de nombreuses autres tâches. Voici une liste de certains des éditeurs de texte les plus populaires et de leurs plugins Go:

Emacs

Avec les plugins suivants: 

  • go-mode
  • GoFlyMake Vérification de la syntaxe de style Flymake pour Go
  • go-errcheck.el Errcheck Integration pour Emacs

Texte sublime 

Avec le plugin GoSublime  

Vim et NeoVim 

Avec une pléthore de plugins Go.

  • vim-go
  • Syntastique
  • tagbar
  • vim-compiler-go
  • Vim-Godef
  • vim-go-extra

Conclusion

Go a parcouru un long chemin et dispose d'un écosystème robuste comprenant de nombreuses options pour l'environnement de développement. Le débogueur Delve fournit une expérience de débogage interactive fantastique et est utilisé par la plupart des meilleurs IDE. Jouez avec ces IDE et trouvez celui qui vous convient le mieux. 

Le bon IDE peut rendre le travail avec Go encore plus amusant.