Что нового в GoLand

В GoLand 2020.2 мы улучшили поддержку Go modules, сделали удобнее поиск возможных проблем и слабых мест в коде, добавили новые проверки кода. Кроме того, вы найдете новые функции редактирования кода, такие как долгожданное Add Caret Per Selected Line, экспериментальная поддержка дженериков, возможность экспортировать код из редактора в Go Playground, обновления для системы контроля версий, включая поддержку WSL 2 для Git на Windows, и многое другое!

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

Go Modules

В диалоговом окне Environment Variables используется новая переменная окружения GOMODCACHE

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

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

Комментирование строки с зависимостью в файле go.mod

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

GoLand добавляет закрывающую фигурную скобку для replace в go.mod файле

GoLand сразу добавляет закрывающую скобку, когда вы печатаете открывающую скобку для операторов replace, exclude и require.

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

Навигация из комментария к исходному коду

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

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

Навигация по ошибкам в файле с помощью виджета Inspections

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

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

Перемещение к ошибке из Problems View и использование быстрого исправление с помощью Alt+Enter

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

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

GoLand предупреждает о возможной проблеме преобразования string(int) и предлагает исправление через Alt+Enter

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

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

GoLand предупреждает о неправильном написании имени теста и предлагает исправление через Alt+Enter

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

Инспекция кода Malformed struct tag уведомляет о возможной проблеме в коде

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

GoLand предупреждает пользователя о невозможном утверждении типа интерфейса

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

Это происходит, когда V и T содержат методы с одинаковым именем, но разными сигнатурами.

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

Действие Show Context Actions показывает возможные опции для быстрого исправления

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

Действие Add Caret Per Selected Line создает курсоры в конце каждой из выбранных строк

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

Put arguments on one line в действии

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

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

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

Рефакторинг Inline Variable распаковывает слайс на вариадические аргументы

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

Быстрое исправление Unpack slice в действии

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

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

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

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

Go Playground

Действие Share in 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/.

Поддержка дженериков или параметров-типов

go2 файл открыт в редакторе в подстветкой синтаксиса

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

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

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

Улучшение процессов

Быстрое исправление Sync dependency с помощью Alt+Enter

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

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

GoLand показывает процесс выполнения команд go list в индикаторе выполнения

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

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

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

Поддержка 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

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

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

Начало ревью с помощью действия комментирования

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

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

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

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

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

Улучшения в поддержке баз данных

Редактор больших значений

Редактор больших значений

Мы добавили полноценный редактор к ячейкам. Если в ячейке длинное значение, например XML или JSON, его удобно открыть в отдельной панели. Для этого нажмите Maximize в контекстном меню.

Предпросмотр запроса при редактировании

Предпросмотр запроса при редактировании

Теперь, прежде чем записать новые значения в редакторе данных, можно посмотреть, какой запрос будет выполнен. Для этого нажмите кнопку DML на панели инструментов.

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

Новое отображение логических ячеек

Новое отображение логических ячеек

Просматривать и редактировать ячейки с типом boolean стало гораздо удобнее. Значения true помечены точкой, чтобы их можно было легко найти среди остальных.

Помощь при написании кода для Google BigQuery

Подсветка Google BigQuery

В списке диалектов пополнение: Google BigQuery. Это пока еще не полноценная поддержка базы, а только правильная подсветка кода.

JavaScript и TypeScript

Новые intention-действия

Новые intention-действия (Alt+Enter) сэкономят ваше время. Например, можно быстро преобразовать цикл for с числовым индексом в перебирающий метод forEach. Кроме того, стало проще просматривать документирующие комментарии в файлах JavaScript и TypeScript: мы сделали рендеринг прямо в редакторе — теперь все выглядит аккуратнее.