Хабрахабр

GoLand 2020.2: улучшенная поддержка Go modules, дженерики и многое другое

Хабр, привет! Две недели назад мы выпустили GoLand 2020.2 и хотим рассказать про основные изменения в этом релизе.

Если коротко, то мы улучшили поддержку Go modules, сделали удобнее поиск возможных проблем и слабых мест в коде, добавили новые проверки кода.

Кроме того, вы найдете новые функции редактирования кода, экспериментальную поддержку дженериков, возможность отправлять код из редактора в Go Playground, обновления для системы контроля версий, включая поддержку WSL 2 для Git на Windows, и многое другое!

Кстати, узнавать о новой функциональности в интерактивной форме можно прямо в IDE. Пройдите урок What's New in GoLand 2020.2 на экране приветствия.

Go modules

Начиная с версии Go 1.15 можно изменить расположение кэша модулей по умолчанию с $GOPATH/pkg/mod на другую папку, используя новую переменную окружения GOMODCACHE.

Для этого укажите GOMODCACHE в Preferences/Settings | Go Modules | Environment. IDE распознает новое расположение и использует его для всех последующих действий с зависимостями.

Теперь можно закомментировать строки в файле go.mod с помощью Comment With Line Comment (Ctrl+/ на Windows/Linux и ⌘/ на macOS).

Работа с комментариями

IDE отображает ссылки из комментариев на соответствующие объявления на уровне пакета и позволяет перейти к ним с помощью Navigate to Declaration or Usages (⌘B на macOS и Ctrl+B/ на Windows/Linux).

Инспекции кода

Inspections Widget показывает количество предупреждений, ошибок и опечаток в текущем файле в правом верхнем углу редактора. Вы можете переходить от одной ошибки к другой с помощью стрелок или хоткея Next Error (F2).

Виджет позволяет настроить уровень подсветки (не подсвечивать ничего, подсвечивать только ошибки или подсветить все), а также изменить уровень значимости проверок или переключиться в Compact View, чтобы виджет не отвлекал вас.

Новое окно Problems показывает список предупреждений и ошибок в текущем файле с описанием этих проблем и позволяет сразу же их исправить с помощью Alt+Enter.

Чтобы открыть окно Problems, нажмите на Inspections Widget или перейдите к нему через View | Tool Window | Problems. Чтобы перейти к строке кода с ошибкой в редакторе, щелкните по ней правой кнопкой мыши.

Новая инспекция кода предупреждает о возможных проблемах преобразований string(int), которые возвращают UTF-8 представление символа Unicode x вместо ожидаемого десятичного представления строки x.

GoLand уведомит о таких потенциальных ошибках и предложит быстрое исправление.

GoLand предупредит о распространенных ошибках в использовании имен тестов и примеров — вам больше не нужно вызывать для этого go vet. IDE уведомит о таких потенциальных ошибках и предложит быстрое исправление (quick-fix). Например, GoLand предложит переименовать Testme в TestMe.

Инспекция кода Malformed struct tag проверяет, соответствуют ли теги структур стандартам языка, и предупреждает о потенциальных проблемах в коде.

Инспекция Impossible interface type assertion анализирует выражения проверки типов v.(T), в том числе внутри оператора switch, и уведомляет пользователя, если тип V переменной v является интерфейсом, который не может реализовывать целевой интерфейс T. Это происходит, когда V и T содержат методы с одинаковым именем, но разными сигнатурами.

Редактирование кода

Чтобы посмотреть предварительный результат быстрого исправления перед его применением, вызовите Show Context Actions с помощью Alt+Enter, выберите нужное действие и нажмите ⌥+Space на macOS или Ctrl+Shift+I на Windows и Linux.

Add Caret Per Selected Line создает курсоры в конце каждой выделенной строки. Используйте Alt+Shift+G на Windows/Linux и ⌥⇧G на macOS.

Настройте перенос на новую строку для аргументов вызова, параметров функций и составных литералов в Preferences/Settings | Editor | Code Style | Go | Wrapping and Braces.

Также можно использовать Put arguments on separate lines и Put arguments on one line с помощью Alt+Enter, чтобы вручную разделить или объединить элементы.

Работа с переменным числом аргументов

Рефакторинг Introduce Variable (Ctrl+Alt+V на Windows и Linux, ⌘⌥ V на macOS) теперь умеет упаковывать аргументы в новый слайс, в то время как Inline Variable (⌥⌘N на macOS и Ctrl+Alt+N на Linux и Windows), наоборот, распаковывает их из слайса.

А при помощи быстрого исправления Unpack slice можно передать слайс последним аргументом вариативной функции.

Сохранение проекта в качестве шаблона

Теперь вы можете повторно использовать проекты или файлы, сохраняя их как пользовательские шаблоны. Для этого выберите Tools | Save Project as Template. В момент создания нового проекта IDE воссоздаст дерево проекта с файлами, папками и конфигурациями сборки.

Go Playground

Теперь вы можете отправлять код в Go Playground, открыв контекстное меню. Выберите Go Tools | Share in Playground в раскрывающемся меню или Tools | Go Tools | Share in Playground, либо используйте горячие клавиши ⌥⇧⌘S на macOS или Ctrl+Alt+Shift+S на Windows/Linux.

Playground также работает с go2-файлами, в этом случае GoLand использует https://go2goplay.golang.org/.

Поддержка дженериков

Команда Go анонсировала прототип дизайна дженериков (или, более строго, параметров-типов). Подробности можно найти в черновике реализации.

В GoLand 2020.2 есть экспериментальная поддержку дженериков. Для работы с ними включите Enable experimental support for generics a.k.a type parameters в Settings/Preferences | Go.

Текущая реализация обеспечивает подсветку синтаксиса и базовую навигацию ссылок и работает только в go2-файлах.

Под капотом IDE

Если Vendoring mode включен, то вы собираете свое приложение, используя только те пакеты зависимостей, которые хранятся в папке vendor вашего проекта.

Теперь, если в проекте есть папка Vendor и включен режим Enable vendoring mode automatically в Settings/Preferences | Go | Go Modules, GoLand будет использовать только папку vendor и не будет обращаться к кэш памяти модулей.

GoLand 2020.2 запускает команды go list последовательно и показывает индикатор выполнения с информацией о количестве команд в очереди.

Система контроля версий

Поддержка WSL 2 для Git на Windows

GoLand 2020.2 позволят использовать Git из WSL 2, который изначально доступен в майском обновлении Windows 10, версия 2004. Если Git не установлен в Windows, GoLand автоматически будет искать Git в WSL и использовать его оттуда. IDE также автоматически переключится на Git из WSL для проектов, открытых из WSL (при помощи \wsl$ path).

Обновленные диалоги для работы с Git

Мы переработали диалоги Merge, Pull и Rebase для Git, сделав их более аккуратными и информативными. Также теперь легче понять, какая команда будет выполняться. И еще добавили опцию –rebase к диалогу Pull и –no-verify к диалогу Merge.

Расширенная поддержка пул-реквестов GitHub

Мы добавили полную поддержку пул-реквестов GitHub. Просматривайте, назначайте и объединяйте пул-реквесты, читайте встроенные комментарии и изучайте хронологию, отправляйте комментарии и ревью, а также принимайте изменения, не покидая GoLand.

Улучшенная презентация результатов Compare branches

Теперь, когда вы сравниваете две ветки в GoLand, вы можете увидеть коммиты обеих веток в одном окне. IDE открывает список коммитов этих веток в редакторе вместо окна VCS, где было недостаточно места для отображения всей информации.

На этом всё! Идеи улучшений мы зачастую берем из ваших отзывов и предложений, так что пишите нам здесь в комментариях, в наш баг-трекер или в Twitter.

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

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

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»