GoLand 2021.1: Удаленная разработка на Docker, SSH и WSL 2, поддержка Go 1.16, улучшенная работа с JSON

Kate

Administrator
Команда форума
Вышло первое крупное обновление GoLand 2021.1. Традиционно расскажем о новом в релизе и покажем, как пользоваться новой функциональностью.
a4d62e564f22c07b42add61022a46d11.png

Если совсем коротко, теперь вы можете:
  • собирать и запускать программы на удаленном окружении: Docker, SSH и WSL 2;
  • использовать новую функциональность Go 1.16 (например, //go:embed);
  • мгновенно генерировать код из JSON;
  • с легкостью обрабатывать ошибки с помощью новых быстрых исправлений;
  • обсуждать код и обмениваться новыми знаниями с помощью сервиса для совместной разработки и парного программирования Code With Me.
Но, это конечно, не все!
Кстати, если вы работаете с базами данных, а также с JavaScript и TypeScript, то последние обновления DataGrip и WebStorm уже включены в этот релизный билд (впрочем, как и всегда). Да, GoLand – это больше, чем просто IDE для Go.
И последнее, новую функциональность можно попробовать в интерактивной форме. Урок What's New in GoLand 2021.1 уже ждет вас на начальном экране.

Run Targets​

В этом релизе команда работала над одним из самых ожидаемых обновлений — возможностью собирать и запускать программу на удаленном окружении Docker, SSH и WSL2 прямо из IDE.
8aeb105dff7651905d2cab7ef57c5d1f.png

Немного теории: добавить нужное окружение можно через меню Run | Edit Configurations. В открывшемся диалоге выбираете нужную конфигурацию, а в выпадающем списке Run on указываете окружение, на котором хотите запустить свой код.
Скоро выйдет серия постов о том, как настраивать и запускать программы на удаленном окружении в нашем официальном блоге (на англ.). Не пропустите!
А пока будем рады видеть вас в нашей документации.

Go 1.16​

Поддержка //go:embed​

Новости из мира Go 1.16: теперь можно встраивать файлы и папки на этапе компиляции программы в виде string (строки), []byte (слайса байтов), или с помощью embed.FS встроить сразу несколько директорий.
GoLand предоставляет подсветку кода, навигацию от директивы embed к файлам и папкам в проекте, рефакторинг Rename, Find usages (поиск использований), автодополнение кода и несколько инспекций. Например, GoLand предупредит вас, если вы попытаетесь вставить файл в переменную неправильного типа.
d1f86171b4bfe409ee8a9f0aa3f9fb9f.png

Обнаружение некорректного использования (t/b).Fatal​

GoLand предупреждает о недопустимых вызовах testing.T метода Fatal внутри горутины, созданной во время теста.
Быстрое исправление перепишет код с вызовом t.Fatal (или аналогичного метода) так, чтобы он предупреждал о сбое теста с помощью t.Error и досрочно выходил из горутины с помощью оператора возврата (return).
68ec8425c1662bc54f39f117d6edd34e.gif

Обнаружение некорректного использования asn1.Unmarshal​

В Go 1.16 go vet находит неправильное использование asn1.Unmarshal и проверяет, что переменная, в которую выполняется демаршалинг (слайса байтов), не равна nil.
В GoLand 2021.1 есть аналогичная проверка с быстрым исправлением для решения этой проблемы.
1562cbd1c649953311a3657e23bff1b2.gif

Работа с JSON​

Чтобы создать структуру с полями и тегами из JSON, в GoLand 2021.1 нужно просто скопировать данные в редактор кода. Это все :)
Если вы хотите отредактировать JSON перед созданием структуры, нажмите Alt+Enter, чтобы вызвать действие Generate type from JSON. GoLand откроет окно Generate Go type from the JSON с уже скопированным туда JSON. Там можно изменить данные по своему усмотрению, затем нажать кнопку Generate и ваша структура появится в редакторе. Также можно вставить JSON в окно вручную.
Кроме того, можно преобразовать JSON внутри уже существующей пустой структуры. Для этого щелкните на эту пустую структуру и вызовите действие Generate struct fields from JSON, нажав Alt+Enter или используя меню Generate.
Если вы вставили невалидный JSON-код в окно Generate Go type from JSON, GoLand вам об этом скажет.
ae097fe445a6b6e82ea4969f74a188a1.gif

Теперь гораздо проще создавать теги JSON и XML для всех экспортируемых полей в структуре.
Когда вы используете Alt+Enter для вызова Add key to tags в структуре или на ее поле, GoLand добавит тег ко всем полям с именами. Если вы хотите изменить стиль имени поля для всех тегов, нажмите Alt+Enter еще раз на любом ключе и выберите Change field name style in tags. Поддерживаются следующие стили: fieldName, FieldName, field-name и field_name.
Вы можете обновлять все значения тегов одновременно с помощью действия Update key value in tags. Нажмите Alt+Enter на любом значении тега в структуре, и GoLand добавит курсоры в конце значений тега каждому полю.
Кроме того, у IDE есть автодополнение для токенов JSON, XML и ASN.1 внутри значений тегов.
45bef1249ce4c8b4cb2a24a3a4699020.gif

GoLand теперь поддерживает формат JSON Lines, в котором каждая запись находится на отдельной строке. Он используется для работы со структурированными данными и логами. IDE распознает типы файлов .jsonl, .jslines, .ldjson и .ndjson.
Файлы этих форматов содержат по несколько строк. Каждая из них является JSON-объектом и отделяется символом переноса строки. Запятые в начале и конце строки не обязательны, и вы можете не заключать содержимое файла в квадратные или фигурные скобки.
4f789f0055701aaa5fe6cb90412b24e3.png

Обработка ошибок​

Про обработку ошибок в Go можно найти множество статей с комментарием “не так уж просто, как казалось”. Мы верим в то, что наша IDE должна делать жизнь пользователей проще, поэтому мы добавили инспекцию Unhandled Error уже несколько лет назад. А чтобы жизнь была не только проще, но и веселей, теперь у этой инспекции появилось несколько быстрых исправлений:
  • Handle error присваивает результаты вызова переменным и создает проверку if error != nil.
  • Wrap error handling in a closure, для операторов defer и go, создает код, похожий на Handle error, но при этом оборачивает весь код в анонимную функцию (closure).
  • Ignore explicitly теперь сработает с defer и go. Быстрое исправление присваивает результаты вызова пустым переменным и оборачивает выражение в замыкание.
ca95f78c216e85bc33e8eebe92db2fa6.gif

Новые быстрые исправления​

Быстрое исправление несовместимости типов внутри составных литералов​

Быстрое исправление для ошибки совместимости типов поддерживает больше сценариев. Теперь оно также предложит реализовать интерфейс и преобразовать его в ожидаемый тип внутри составных литералов.
fce247444933c727687cf9fe3f7c599c.gif

Быстрое исправление Create Type​

Create Type теперь предлагает не только создать тип, который уже используется, но еще не определен, но и создаст поля для него.
a09ec8a986773dc75115b3f14811efbb.gif

Одновременная генерация set и get методов​

Создание методов get и set для каждого поля в длинной структуре не подходит под определение увлекательной задачи. Чтобы избавить вас от утомительной рутины, GoLand 2021.1 может cгенерировать все необходимые геттеры и сеттеры для выбранной структуры сразу.
Нажмите Alt+Enter на любом имени поля в структуре и выберите Generate getter and setters из выпадающего меню. GoLand откроет окно Select Fields, где вы можете выбрать методы get и set для всех полей или каких-то конкретных.
92a331476f1547c3ea0b27233eb855d1.gif

Мы понимаем, что генерация геттеров и сеттеров в большинстве случаев не нужна в Go, но если вдруг у вас будет такая задача, вы знаете как ее решить быстро :)

Рефакторинги​

Extract Type​

Extract Type позволяет извлечь тип из существующего или преобразовать анонимный тип структуры в именованный. Чтобы вызвать рефакторинг, нажмите Ctrl+Alt+Shift+T на Windows или Ctrl+T на macOS.
60bf7e9c1196411933163c58516dcc27.gif

Rename модуля (go.mod)​

Случается так, что иногда нужно переименовать имя модуля. Чтобы переименование происходило быстро и безболезненно, мы добавили поддержку рефакторинга Rename в go.mod файлах. Поддержка позволяет переименовать модуль без необходимости поиска по всему дереву проекта для замены имени.
Вызовите Rename на имени модуля с помощью Shift+F6 на Windows/Linux или ⇧F6 на macOS. GoLand откроет окно Rename, где можно изменить имя, настроить параметры переименования в комментариях и строках, и посмотреть предварительный результат рефакторинга. Из вкладки Refactoring Preview вы можете перейти ко всем использованиям этого имени модуля. Если результат рефакторинга вас не устроит, все изменения можно отменить.
9e40dd72a8dcbd7224eac9fb504db003.gif

Постфиксное автодополнение​

Постфиксное автодополнение varCheckError​

Введите .varCheckError после выражения, возвращающего ошибку. IDE добавит имена переменных, проверку if error != nil и вернет ошибку из функции.
5f89b0a1d504186b1aac4d080fe1a27a.gif

Форматирование​

Встроенный форматер теперь может группировать импорт точно так же, как это делает goimports -local.
Чтобы использовать эту функциональность, перейдите в Preferences/Settings | Editor | Code Style | Go | Imports и включите опцию группировки импортов. Теперь вы можете выбрать импорты, которые будут сгруппированы в отдельные блоки.
dbb81a6743f901c944767675423f0f8d.png

Инструмент для совместного редактирования кода​

Сервис для совместной разработки и парного программирования Code With Me, который мы уже анонсировали в предыдущем релизе, поменял статус EAP на релизный и теперь работает в GoLand по умолчанию, без необходимости устанавливать плагин.
Что появилось в этой версии:
  • возможность гибко настраивать уровень доступа к проекту;
  • возможность общаться по видео и аудио, переписываться в мессенджере.
Кстати, чтобы присоединиться к сеансу и работать вместе с вами, даже не обязательно устанавливать GoLand.
Если у вашей компании повышенные требования к безопасности, можно установить локальную версию Code With Me и пользоваться сервисом в пределах внутренней сети.
Чуть больше о безопасности можно почитать в нашей документации.
На этой странице можно узнать, что именно входит в вашу лицензию.
77591ad3f94f88d4d80e2b4dba7f3cef.png

Запуск и отладка с повышенными привилегиями​

GoLand 2021.1 позволяет запускать расширенную sudo сессию. При первом запуске GoLand спросит, хотите ли вы, чтобы сессия продолжалась или прекращала свое выполнение немедленно. В Preferences/Settings | Appearance & Behavior | System Settings | Process Elevation всегда можно изменить свой ответ.
Пожалуйста, обратите внимание, что при включении этой опции вы предоставляете GoLand и всем сторонним плагинам расширенный доступ к вашей системе.
1aae1b2ff1a5785dab18bd892b651b07.png

Автодополнение кода​

Появилось автодополнение на основе машинного обучения (ML). Эта функциональность находится на ранней стадии разработки и является альтернативой стандартному механизму ранжирования.
Выберите Mark position changes in the completion popup в Preferences/Settings | Editor | General | Code Completion, чтобы опции автодополнения, ранжированные с помощью ML, были отмечены иконками стрелок вверх/вниз в выпадающем меню.
03c8a26be14c5453e90fab6a95b050f3.png

Улучшения пользовательского интерфейса​

Меню быстрого доступа​

Виджет Configuration, который ранее был доступен в левом нижнем углу IDE, теперь находится в правом верхнем углу. Нажмите значок шестеренки, чтобы переключить тему, изменить сочетания клавиш, перейти к плагинам или открыть настройки IDE.
48f76992e5df61d6bd945732352b7661.png

Быстрый доступ к недавним проектам на Windows через меню 'Пуск'​

Кликните правой кнопкой мыши на иконку GoLand в меню Пуск на Windows, чтобы открыть недавний проект.
a10a40d5ddd98a072fbe83affd4812a0.png

Улучшенные всплывающие подсказки​

Всплывающие подсказки теперь отображаются одна за другой и не накладываются друг на друга.
b340293c24bb8820f6c60ffb863a7355.gif

Шрифты​

Мы добавили больше вариантов шрифтов в Preferences/Settings | Editor | Font.
bbe85b5f77e81170f2004b879cef9534.png

Другие изменения​

Предварительный просмотр HTML-файлов​

Мы добавили встроенное превью для HTML-файлов. Все изменения, которые вы вносите в HTML-файлы, а также в соответствующие CSS и JavaScript-файлы, мгновенно сохраняются, а превью обновляется в реальном времени в редакторе.
Чтобы его открыть, нажмите на значок GoLand в виджете в правом верхнем углу редактора.
aafe6494939a76d1a4e7ecd13f3b0566.gif

Раскрытие вкладок в режиме разделенного редактора​

Необходимо больше места при работе с несколькими файлами одновременно в режиме разделенного редактора? Дважды щелкните на вкладку, с которой вы работаете, чтобы развернуть ее в окне редактора. Чтобы вернуть окно в прежнее состояние, снова кликните по нему дважды.
ec513f15c3bb509830d472a9e5fa3ad9.gif

Плагин Makefile Language​

Плагин Makefile Language для поддержки языка GNU Make теперь включен в IDE. Благодаря нашему коллеге, Виктору Кропп (который работал над плагином в свое свободное время (!!!)), в GoLand 2021.1 вы найдете все необходимое: подсветку кода, быстрый просмотр документации, Find Usages, навигацию и автодополнение.
fc80c9eafa0a9cd803c4ea3345ef5685.png

Вот и все на сегодня! Идеи для улучшений мы часто берем из ваших отзывов и предложений. Пишите нам здесь в комментариях, в наш баг-трекер или Twitter.
По традиции напоминаю, что если вы уже используете IntelliJ IDEA Ultimate, то все возможности GoLand доступны прямо там, если установить этот плагин.
Спасибо за внимание!


Источник статьи: https://habr.com/ru/company/JetBrains/blog/553460/
 
Сверху