Что нового в GoLand 2019.3

GoLand 2019.3 потребляет меньше ресурсов процессора и работает гораздо быстрее, чем раньше. В новой версии расширена поддержка Go Modules, появилось множество новых быстрых исправлений и функциональных возможностей для рефакторинга, можно вызывать метод встроенного поля через Evaluate Expression и отлаживать приложения удаленно с помощью Mozilla rr.

Более того, теперь можно включить Global File Watcher для каждого нового проекта, работать с MongoDB и многое другое!

Производительность

A chart with the startup times measurement of GoLand 2019.3 on different operating systems

После выпуска GoLand 2019.2 этим летом мы упорно трудились над тем, чтобы IDE работала быстрее и потребляла меньше ресурсов. Основной результат в этой версии — сокращение времени запуска, пока IDE готовится к началу работы, отображает экран приветствия и индексирует проект.

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

Улучшенная поддержка Go Modules

Переход из файла go.mod в Project View

GoLand 2019.3 оснащен подсветкой синтаксиса для файлов go.mod и навигацией от имени импортируемого модуля к папке с его исходным кодом. Нажмите ⌘+B на MacOS или Ctrl+B на Windows/Linux на определенном пути импорта зависимостей, и GoLand переместит вас к его источникам в Project View.

Кроме того, Go Modules отображаются теперь с полным путем импорта, а их версии представлены приглушенным цветом шрифта в окне Project View.

Обновления отладчика

Evaluate Expression dialog with the result of call

Вызов метода встроенного поля

Evaluate Expression в отладчике теперь позволяет напрямую вызывать метод встроенного поля.

Отладка с помощью Mozilla rr

Удаленная отладка с помощью Mozilla rr

Многие сервисы, написанные на Go, работают на Linux, и Mozilla rr может помочь в поиске ошибок, которые трудно воспроизвести. Отладка с помощью Mozilla rr поддерживается начиная с GoLand 2018.3, но раньше она работала только на Linux. Теперь можно запустить сервер на Linux и отладить программу удаленно на MacOS или Windows. Следуйте этим инструкциям:

  • Запишите трейс выполнения программы на удаленной машине.
  • Запустите отладчик на удаленной машине: dlv --headless --api-версия 2 -l localhost:2345 Repay /path/to/trace/dir /path/to/binary.
  • Подключитесь к удаленному компьютеру через конфигурацию Go Remote.

Обратите внимание, что Mozilla rr доступен только на Linux.

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

Delete unused parameter name from the expression via Alt+Enter

Обработка неиспользуемых параметров

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

В последнем случае IDE предоставляет два быстрых исправления на выбор: Delete parameter names и Rename to _. Такое же поведение предусмотрено для функций и методов, используемых в качестве функционального типа. Такое же поведение предусмотрено для функций и методов, используемых в качестве функционального типа.

Чтобы удалить все неиспользуемые параметры за один раз, нажмите Alt+Enter и воспользуйтесь быстрым исправлением Delete all unused parameters.

Create a missing function

Создание отсутствующего метода или функции

GoLand предоставляет быстрое исправление для создания недостающей функции или метода, когда они используются в функциональном типе. Просто нажмите Alt+Enter и выберите Create method/function.

GoLand предлагает импортировать пакет

Улучшенная обработка псевдонимов пакетов

Теперь GoLand предлагает импортировать пакеты на основе используемых псевдонимов через Alt+Enter в любом файле проекта.

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

Types of parameters are shown in the Parameters and Result Parameters tabs

Change Signature

Change Signature теперь всегда показывает типы параметров во вкладках Parameters и Result parameters. Для объединения одинаковых типов параметров в сигнатуре пригодится опция Reuse Types.

Кроме того, вы найдете два новых Intention actions: Reuse signature types объединит все одинаковые определения параметров в одном объявлении, а Expand signature, наоборот, добавит типы к каждому параметру через Alt+Enter.

Extract Variable suggests err for expression of type error

Extract Variable и Rename

Extract Variable и Rename предлагают подходящие имена для переменных, анализируя контекст. Например, err для выражения с обработкой ошибки, ctx — для context.Context и так далее.

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

Comparison of code inspections behavior between 2019.2 and 2019.3 versions

Инспекции кода теперь работают прицельнее. Мы сократили диапазон выделения потенциальных проблем в редакторе, чтобы при вызове контекстного меню через Alt+Enter показывать только самые подходящие быстрые исправления для конкретного участка кода.

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

An example of the error message for rune literal

Улучшения для лексера rune литералов

Мы улучшили лексинг rune литералов несколькими способами:

  • GoLand предоставляет более четкое и краткое сообщение об ошибке, объясняющее, почему выражение неверно.
  • GoLand не выделяет корректный rune литерал как ошибку после редактирования.
  • Обработка неправильных rune литералов более стабильна.
GoLand highlights reassignment in the left-hand side of declaration

Подсветка синтаксиса для переназначений

Go позволяет использовать существующие переменные в левой части коротких объявлений var. Таким образом, два выражения, которые выглядят одинаково, могут иметь разные значения. Чтобы это было легче заметить, мы добавили подсветку синтаксиса для переназначений.

В GoLand можно сворачивать блоки кода для составных литералов

Сворачивание блоков кода для составных литералов

В GoLand 2019.3 можно сворачивать блоки кода для составных литералов. Используйте переключатели, чтобы сложить или разложить фрагмент кода (либо нажмите Ctrl+NumPad Minus/Ctrl+NumPad Plus на Windows или ⌘+NumPad Minus/⌘+NumPad Plus на MacOS). Чтобы настроить поведение сворачивания блоков кода, перейдите в Settings/Preferences | Editor | General | Code Folding.

Улучшения для Live Templates

for live template suggests line as a value

Live Templates for и forr предлагают осмысленные имена для переменных. Например, для индекса будут предложены имена i и index; для переменной — s, string или line.

Шаблон meth предлагает варианты автодополнения для ресиверов.

Навигация

Поиск только в выбранной области

Поиск только в выбранной области

С помощью действия Find (⌘+F на MacOS и Ctrl+F на Windows/Linux) теперь можно искать необходимый фрагмент кода в ограниченной области. Выделите нужный фрагмент в редакторе и вызовите Find — GoLand выполнит поиск только в выбранной области. Чтобы легко переключиться на поиск по всему файлу, нажмите ⌘+F/ Ctrl+F во второй раз или используйте опцию In Selection в панели инструментов.

Searching with ‘Find in Path’ with a file mask option in action

Использование ‘Find in Path’ с файловой маской

Теперь при использовании диалога Find in Path с опцией file mask GoLand показывает расширения файлов в результатах поиска, чтобы было проще различать файлы с одинаковыми именами.

Global File Watchers для всех новых проектов

Enabling golangci-lint for all new projects

В GoLand 2018.2 мы добавили Global File Watcher для обмена настройками сторонних инструментов между уже созданными проектами с помощью опций Project и Global.

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

В меню File выберите Other Settings | Settings for new projects, перейдите к Tools | File Watchers, добавьте новый Global File Watcher, а затем установите флажок рядом с ним, чтобы включать его во все новые проекты.

Обучающие материалы

An exercise for the new feature of Extract Variable refactoring

Часто не хватает времени на изучение What's New, release notes или новой статьи о продукте, которым пользуешься, когда нужно завершить проект и уложиться в срок. Поэтому мы добавили интерактивные уроки, которые помогут узнать о функциональности GoLand, когда для этого будет подходящий момент.

Уроки находятся на экране приветствия над списком проектов. Когда вы обновите IDE до новой версии, там появится урок о новом выпуске. Кроме того, вы можете открыть Tutorials с помощью окна инструментов из любого проекта.

Разное

Switching between the callers and callees in the Hierarchy tool window

Hierarchy

В окне Hierarchy появилась возможность анализа иерархии вызовов метода. Две новые кнопки позволяют переключаться между методами, которые вызываются из текущего или вызывают текущий метод. Также теперь можно сортировать элементы дерева в алфавитном порядке. Чтобы увидеть Hierarchy в списке Tool Windows, необходимо сначала построить иерархию, а затем перейти в меню Navigate | Call Hierarchy or Navigate | Type Hierarchy.

Switching theme plugin without restarting the IDE

Установка плагинов тем и раскладки клавиатуры на лету

В GoLand 2019.3 можно устанавливать и удалять плагины раскладки клавиатуры и плагины цветовых схем без перезапуска IDE.

Select ‘Add Keyboard Shortcut’ in the settings for ‘Focus Editor’ action

Пользовательский шорткат для возврата фокуса в редактор

Можно задать свой шорткат для действия, которое возвращает фокус обратно в редактор, вместо использования кнопки ESC. Найдите действие Focus Editor в разделе Preferences/Settings | Keymap, щелкните на нем правой кнопкой мыши и выберите Add Keyboard Shortcut из раскрывающегося меню.

More visible scrollbars in the editor

Контрастные полосы прокрутки

Мы добавили возможность сделать полосы прокрутки более видимыми. Для этого установите флажок Use contrast scrollbars в разделе Preferences/Settings | Appearance & Behavior | Appearance.

Улучшения в поддержке VCS

New Clone dialog with the list of repositories

Обновленное диалоговое окно Clone

Новое диалоговое окно Clone расположено под VCS | Get from Version control. Теперь вы можете войти в аккаунт на GitHub прямо из обновленного диалога. Если вы уже вошли в систему, IDE мгновенно покажет списки всех репозиториев, сгруппированных по учетным записям или организациям, в которых вы состоите.

‘Show Details’ opens a window with conflict changes

Информация о причинах конфликтов слияния

При возникновении конфликтов во время действий merge, rebase и cherry-pick теперь можно подробнее узнать об источнике изменений в диалоге Merge. Просто нажмите Show Details, чтобы просмотреть список коммитов, которые привели к текущему состоянию кода.

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

Просматривать коллекции и поля в проводнике базы данных

Поддержка MongoDB

В GoLand 2019.3 реализована начальная поддержка MongoDB. Теперь вы можете:

  • Просматривать коллекции и поля в проводнике базы данных.
  • Просматривать коллекции в табличном виде по страницам. Можно сортировать по значениям и использовать фильтр.
  • Запускать запрос: поставьте на него каретку и нажмите Ctrl/Cmd+Enter или кнопку Run на панели инструментов.
An example of the connection error

Поиск ошибок подключения

Начать исследовать ошибки подключения теперь можно нажатием всего одной кнопки в IDE — и GoLand откроет результаты об ошибке в поисковике Google.

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

Code completion for the class name from CSS library

Автодополнение кода для CSS-библиотек, добавленных через CDN

Если вы используете Bootstrap или другую CSS-библиотеку в своем проекте и в HTML-файле есть соответствующая ссылка на CDN, WebStorm предложит варианты автодополнения для имен классов из этой библиотеки, при этом ее исходный код не нужно добавлять в проект.

Code suggestions for new variable

Подсказки для имен новых символов

При добавлении новых переменных или параметров в файлы на JavaScript или TypeScript, WebStorm будет предлагать варианты для их имен на основе имен классов, интерфейсов и псевдонимов типов, определенных в проекте, стандартных библиотеках и используемых зависимостях.

Для новых переменных, функций, классов и интерфейсов IDE предложит имена, которые уже использовались в той же области, но еще не были определены и отмечены как неразрешенные.