GoLand 2021.2: Улучшенная поддержка Go-модулей, новые возможности запуска gofmt, поддержка Go 1.17

Привет, Хабр!

Вышел GoLand 2021.2 — второй релиз этого года. Сегодня расскажем, что нового в этом релизе, и покажем, как пользоваться новой функциональностью.

image-loader.svg

Что нового:

  • Расширенная поддержка Go-модулей

  • Возможность запускать gofmt вместе с встроенным форматером GoLand

  • Поддержка новой функциональности Go 1.17 — преобразования среза в указатель на массив

  • Возможность подписывать коммиты GPG-ключом

  • Автоматическая перезагрузка страницы в браузере при сохранении кода

  • Автодополнение кода для полей и операторов в MongoDB

И многое другое!

Кстати, узнать о новой функциональности в интерактивной форме можно прямо в IDE. Пройдите урок What’s New in GoLand 2021.2, доступный на экране приветствия в разделе Learn GoLand. Там же вы найдете наш новый Onboarding Tour, который поможет поближе познакомиться с IDE, а также курс по Git.

Go-модули

Загружайте обновления go.mod вручную

Когда вы вносите изменения в go.mod, GoLand автоматически исполняет команду go list и загружает эти изменения.Некоторые пользователи отмечали, что автоматическая загрузка осложняет работу, потому что иногда IDE исполняет команду go list прямо во время редактирования.

Теперь вы можете вручную загружать обновления go.mod. Для этого перейдите в Settings/Preferences | Build, Execution, Deployment | Build Tools и выберите External Changes.

Теперь, если вы внесете изменений в go.mod, то увидите иконку Load Go modules Changes. Нажмите на нее, когда закончите редактирование, — изменения go.mod загрузятся. Если вы выбрали опцию External Changes, то автоматическая загрузка будет по-прежнему работать для внешних изменений.

image-loader.svg

Чтобы иконка появлялась при внесении любых изменений — как внешних, так и внутренних, — нужно убрать галочку в чекбоксе Reload project after changes in the build scripts.

На наш взгляд, отключать автоматическую загрузку обновлений go.mod не стоит. Но если для вас эта опция, напротив, окажется полезной, обязательно расскажите нам об этом (нам интересно узнать подробнее о ваших сценариях).

Улучшенная поддержка версий Go

Если вы использовали в коде функциональность из более новой версии Go, чем та, которая указана в go.mod, GoLand сообщит об ошибке.

Для числовых литералов и //go: embed есть быстрые исправления, с помощью которых можно поменять версию языка в go.mod.

Например, если вы хотите использовать директиву //go: embed, которая доступна в версии 1.16, а в go.mod у вас указана версия 1.15, GoLand сообщит, что функциональность //go: embed доступна только в версии 1.16 и выше. Нажмите Alt + Enter (⌥+Enter), и IDE предложит быстрое исправление, которое изменит версию Go в go.mod.

image-loader.svg

Go значит Go modules

Теперь при выборе опции Go на начальном экране создается проект с Go-модулями. А проекты с GOPATH теперь называются »Go (GOPATH)».

image-loader.svg

Работа с неиспользуемыми зависимостями

Бывают ситуации, когда в директивах replace в файле go.mod оказываются зависимости, которые вы не используете в коде. Например, вы сгенерировали go.mod с помощью скрипта, который добавил много директив replace — как нужных, так и не очень.

Раньше GoLand не загружал и не удалял неиспользуемые зависимости в директивах replace, и они становились красными. Эти строки кода красного цвета в go.mod вынуждали некоторых пользователей искать ошибки, которых на самом деле не было, — наличие неиспользуемых зависимостей не влияло на работу приложения.

Теперь неиспользуемые зависимости в директивах replace становятся серыми, чтобы их было легче отличить от ошибок. Серым форматируются и неиспользуемые зависимости в директивах require, рядом с которыми есть комментарий indirect.

Наведите указатель мыши на серую строку, и вы увидите сообщение «Unused dependency». Если нужно загрузить неиспользуемые зависимости, нажмите Alt+Enter (⌥+Enter) и выберите опцию Download all modules to the module cache. Также можно загрузить любую из зависимостей по отдельности.

image-loader.svg

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

В Go есть утилита gofmt, которая форматирует код. И, как вы, возможно, знаете, у GoLand есть свой встроенный форматер.

GoLand позволяет настроить запуск gofmt вместе со встроенным форматером. Однако пользователи просили нас сделать использование gofmt более доступным и удобным.

В этом релизе у нас появилась опция Run gofmt on code reformat, позволяющая запускать gofmt вместе со встроенным в GoLand форматером.

Опция активна по умолчанию. Вы можете запускать оба инструмента с помощью комбинации Ctrl+Alt+L (⌘+⌥+L). Команда gofmt будет исполняться после встроенного форматера.

Это лишь первый шаг. Мы планируем и другие изменения в работе с gofmt.

image-loader.svg

Больше быстрых исправлений

Поддержка нового синтаксиса ограничений сборки //go: build

В прошлом году команда разработки Go предложила заменить синтаксис ограничений сборки // +build на //go: build.

В связи с этим мы добавили в GoLand два быстрых исправления. Первое переносит строку с //go: build в начало файла, как того требует новый синтаксис.

В Go 1.16 можно использовать либо старый синтаксис, либо оба вместе. Чтобы сгенерировать объявление // +build в дополнение к //go: build, вы можете воспользоваться вторым быстрым исправлением.

image-loader.svg

Активируйте поддержку cgo одним кликом

Если вы импортировали пакет для языка С, но забыли активировать поддержку cgo в настройках проекта, GoLand предложит быстрое исправление Enable cgo support.

Опция Navigate to cgo import перемещает курсор в начало названия пакета. Это поможет вам отыскать инструкцию импорта в большом проекте.

GoLand также предложит изменить настройки, если вы указали в ограничениях сборки одну ОС, а в настройках — другую. В этом случае также будет доступна опция переместить курсор на строку с объявлением об ограничениях сборки.

image-loader.svg

Отладчик

Теперь вы можете пользоваться режимом Preview во время отладки приложения. Он позволяет открывать файлы последовательно в одной вкладке. Так вы избежите загромождения видимой зоны редактора многочисленными открытыми вкладками.

Чтобы активировать режим Preview во время отладки, перейдите в Preferences/Settings | Editor | General | Editor Tabs и включите опцию Enable preview tab.

Когда вы открываете файлы в режиме предпросмотра, название файла показывается курсивом. Как только вы начинаете вносить изменения, шрифт меняется на обычный и режим Preview для этого файла отключается.

image-loader.svg

Go 1.17

В Go 1.17 есть возможность преобразовывать срез в указатель на массив. GoLand не будет считать такие преобразования ошибками. Чтобы использовать функциональность Go 1.17, нужно изменить значение GOROOT на «Go 1.17beta1» или «Go 1.17rc1» в Settings/Preferences | Go.

image-loader.svg

Быстрая навигация

Теперь Navigate to implementations работает с реализациями интерфейсов, которые находятся в папке internal. Чтобы перейти к реализациям, нажмите на значок в поле редактора слева от интерфейса. Также можно переходить к интерфейсу от его реализаций.

image-loader.svg

Интеграция с системами контроля версий

Подпись коммитов GPG-ключом

В GoLand 2021.2 вы можете верифицировать коммиты с помощью GPG-ключа. Чтобы активировать эту функциональность, перейдите в Settings | Version Control | Git.

Если у вас уже есть ключ, то просто выберите его из раскрывающегося списка. Если вы делаете это в первый раз, то сначала ключ нужно сгенерировать.

image-loader.svg

Новые проверки перед коммитом

В разделе проверок перед коммитом вы найдете две новые опции: Run tests и Analyze code. Они позволяют тестировать и анализировать код перед коммитом. Чтобы активировать их, перейдите в Settings | Version Control | Commit | Before commit или нажмите на значок шестеренки в окне Commit.

Обратите внимание, что возможность тестировать код перед коммитом доступна только в том случае, если у вас включена опция Use non-modal commit interface в Settings | Version Control | Commit.

image-loader.svg

Новая поисковая строка в Local History

Мы добавили в окно Local History новую строку поиска. Локальная история отслеживает изменения в файлах независимо от систем контроля версий. Новая строка поиска поможет быстрее найти нужный текст в изменениях файла.

Чтобы открыть Local History, щелкните правой кнопкой на файле и перейдите в Local History | Show History.

Это не значит, что системами контроля версий можно больше не пользоваться. Local History их, конечно, не заменит, но может послужить палочкой-выручалочкой в случае, если вы, например, не успели внести изменения в Git-репозиторий.

image-loader.svg

Changes вместо Default Changelist

Список Default Changelist, в котором показывались файлы с изменениями, еще не внесенными в Git-репозиторий, теперь называется Changes. Это обновление будет доступно по умолчанию во всех ваших новых проектах. Кроме того, операции Git больше не будут автоматически создавать changelist.

image-loader.svg

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

Новое представление для объединенных проектов

Объединенные проекты в окне Project теперь представлены иначе. Раньше они показывались как дочерние папки существующего проекта, хотя их реальное расположение в файловой системе могло быть совершенно другим. Сейчас объединенные проекты представлены в виде отдельных папок.

image-loader.svg

Дополнительные настройки и стрелки навигации

Мы добавили в настройки новый раздел — Advanced Settings. В нем содержатся дополнительные настройки, например возможность изменить ширину левого отступа в режиме Distraction-free.

Также в правом верхнем углу окна Settings появились стрелки, с помощью которых можно переходить между разделами.

image-loader.svg

Уведомления о новых версиях

GoLand уведомит вас о наличии новой версии, и вы сможете установить обновление прямо из IDE. Для этого у вас должно быть установлено приложение Toolbox App версии 1.20.8804 и выше.

image-loader.svg

Новые опции для встроенного терминала

Курсоры бывают разные. Если вам больше нравится вертикальная линия или нижнее подчеркивание, перейдите в Settings | Tools | Terminal и задайте удобную для вас форму курсора при помощи раскрывающегося списка.

В настройках терминала есть еще одно изменение: теперь мы поддерживаем опцию Use Option as Meta key. Клавиша Meta изменяет назначение другой клавиши, если нажать их вместе. Использование клавиши Meta может быть полезным, если вы много работаете в терминале. Например, эта опция позволяет использовать следующие комбинации:

  • Option + F — перейти к следующему слову

  • Option + B — вернуться на одно слово назад

  • Option + D — удалить следующее слово

image-loader.svg

Улучшенное окно Change project icon

Мы изменили вид окна, которое позволяет загрузить свою иконку для проекта. Для этого нажмите на название проекта в списке проектов на начальном экране и в контекстном меню выберите Choose project icon.

image-loader.svg

Веб-разработка

Перезагрузка страниц при сохранении изменений

Мы доработали Live Edit. Теперь GoLand может автоматически обновлять страницу в любом браузере, когда вы изменяете и сохраняете HTML, CSS или JavaScript.

Чтобы использовать эту функцию, откройте HTML-файл и нажмите на иконку вашего любимого браузера. Перезагрузка страниц при сохранении изменений включена по умолчанию. Настройки Live Edit можно изменить в Settings | Build, Execution, Deployment | Debugger | Built-in Server.

image-loader.svg

Рефакторинг для хуков useState в React

Рефакторинг Rename теперь работает для хуков useState в React. Просто поставьте курсор на значение состояния и вызовите рефакторинг Rename с помощью комбинации Shift+F6(⇧+F6) или щелкните правой кнопкой мыши и выберите Refactor | Rename.

image-loader.svg

Автоимпорт для require ()

GoLand уже умеет добавлять недостающие инструкции import для ES6-символов, и теперь такая же функция доступна для модулей CommonJS — необходимые инструкции require () добавятся в код при выполнении автодополнения.

image-loader.svg

Автодополнение частных пакетов npm

Автодополнение теперь работает для частных пакетов npm. GoLand покажет данные о последних версиях таких пакетов, как и в случае с публичными пакетами.

image-loader.svg

Расширенная поддержка web-types

Мы запускаем новую версию web-types — стандарта для документирования различных фреймворков. Первая версия web-types включала в себя поддержку Vue.js.

Мы хотим построить новую архитектуру, которая будет поддерживать новые JavaScript-фреймворки и улучшит поддержку для уже существующих. Чтобы лучше понять, как использовать web-types в ваших проектах, прочитайте статью в блоге WebStorm или посмотрите вебинар.

image-loader.svg

Работа с базами данных

Консоль MongoDB теперь поддерживает автодополнение для полей, вложенных полей и полей внутри агрегатных выражений. Также автодополнение работает для операторов запроса и проекции, операторов обновления и стадий агрегирования.

image-loader.svg

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

Действия при сохранении кода

Мы собрали вместе все действия, которые можно запускать при сохранении кода. Теперь их можно настроить в Settings | Tools | Actions on Save. Просто поставьте галочку в чекбоксе рядом с действием, которое хотите активировать.

Также можно применить расширенные настройки. Для этого наведите указатель на действие, нажмите на ссылку с настройками конфигурации и измените настройки на появившейся странице.

image-loader.svg

Автоматическое удаление кеша и логов

GoLand автоматически удаляет кеш и логи после того, как они не обновлялись 180 дней. Этот процесс не затронет ваши системные настройки и плагины.

Вы можете удалить кеш и логи вручную с помощью действия Help | Delete Leftover IDE Directories.

image-loader.svg

Проверка орфографии и грамматики в файлах Go

Теперь IDE по умолчанию выполняет проверку на опечатки и грамматические ошибки в файлах Go. Проверка возможна благодаря плагину Grazie, который включен в GoLand. Добавить и удалить языки, для которых вы хотите настроить проверку опечаток и ошибок, можно в Settings | Editor | Natural Languages.

Чтобы отрегулировать, в каких типах файлов будет активен Grazie и на какие именно языковые проблемы он будет обращать внимание, перейдите в подраздел настроек Grammar.

image-loader.svg

Пользовательский интерфейс на китайском, японском и корейском

Интерфейс GoLand теперь полностью локализован на китайский, корейский и японский. Локализация доступна в виде плагинов, которые не включены в IDE; их можно установить из репозитория.

image-loader.svg

Code With Me

Теперь во время сессии Code With Me вы можете видеть, какие опции автодополнения GoLand показывает вашим коллегам. Чтобы использовать эту функциональность, включите режим Following.

image-loader.svg

Это все на сегодня! Пишите нам здесь в комментариях, в наш баг-трекер или Twitter — мы часто берем идеи для улучшений из ваших отзывов и предложений.

Напомню, что, если вы уже используете IntelliJ IDEA Ultimate, то все возможности GoLand доступны прямо там, нужно лишь установить этот плагин.

Спасибо за внимание!

© Habrahabr.ru