GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только

в 12:56, , рубрики: Go, go golang goland jetbrains, Блог компании JetBrains, Программирование

Привет!

Две недели назад мы выпустили GoLand 2019.3.

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 1

Этот релиз — особенный для нашей команды и отличается от предыдущих. С того момента, как GoLand из плагина вырос в самостоятельную IDE, прошло 2 года. Все это время мы старались добавить как можно больше разнообразной функциональности: от набора рефакторингов, интеграций с профилировщиками, качественной поддержки Go Modules, инспекций кода и кастомных тем до возможности загрузить и установить любую версию SDK прямо из IDE.

В этом релизе мы решили сосредоточиться на улучшении производительности, исправить мелкие баги, недоделки и сценарии с неожиданным поведением. Однако не смогли удержаться и все-таки добавили несколько новых вещей :)

Если коротко, то:

  • GoLand 2019.3 потребляет меньше ресурсов процессора и работает гораздо быстрее, чем раньше.
  • Расширили поддержку Go Modules.
  • Добавили множество новых быстрых исправлений и возможностей для рефакторинга.
  • Инспекции показывают только самые подходящие быстрые исправления для конкретного участка кода.
  • Теперь можно отлаживать приложения удаленно с помощью Mozilla rr на MacOS или Windows.
  • Появилась глобальная настройка File Watchers по умолчанию для всех новых проектов.
  • Поддержали MongoDB.
  • Добавили интерактивные уроки в IDE: с одной стороны, это альтернативный способ узнать о новой функциональности, а с другой — возможность сразу опробовать ее в действии.

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

Мы упорно трудились, чтобы IDE работала быстрее и потребляла меньше ресурсов. Основной результат — сократилось время запуска.

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

Работа над улучшением производительности будет продолжаться и в следующих версиях.

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 2

Go Modules

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 3

Отладчик

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 4

Удаленная отладка с помощью 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.

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 5

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

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

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

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 6

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 7

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 8

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

Change Signature

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 9

Extract Variable и Rename

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 10

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 11

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

Улучшения работы редактора с rune-литералами

Мы улучшили работу редактора с rune-литералами:

  • GoLand предоставляет более четкое и краткое сообщение об ошибке, объясняющее, почему выражение неверно.
  • GoLand не выделяет корректный rune-литерал как ошибку после редактирования.
  • Обработка неправильных rune-литералов более стабильна.

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 12

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 13

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 14

Live Templates

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 15

Навигация

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 16

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 17

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

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 18

Интерактивные уроки

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 19

Разное

Hierarchy

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 20

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 21

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 22

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 23

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

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 24

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 25

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

Поддержка MongoDB

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

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 26

Поиск ошибок подключения с помощью Google

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

GoLand 2019.3 с улучшенной производительностью, расширенной поддержкой Go Modules и не только - 27

Вот и всё! Спасибо, что дочитали до конца! Будем рады вашим отзывам и постараемся ответить на любые вопросы. Пишите нам здесь в комментариях, в Twitter или в баг-трекер.

Ваша команда JetBrains GoLand

The Drive to Develop

Автор: Екатерина Жарова

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js