Привет, Хабр!
Две недели назад мы выпустили GoLand 2019.3.
![](https://habrastorage.org/webt/2b/oi/mz/2boimz1otieiqgmny6a8wujucso.png)
Этот релиз — особенный для нашей команды и отличается от предыдущих. С того момента, как GoLand из плагина вырос в самостоятельную IDE, прошло 2 года. Все это время мы старались добавить как можно больше разнообразной функциональности: от набора рефакторингов, интеграций с профилировщиками, качественной поддержки Go Modules, инспекций кода и кастомных тем до возможности загрузить и установить любую версию SDK прямо из IDE.
В этом релизе мы решили сосредоточиться на улучшении производительности, исправить мелкие баги, недоделки и сценарии с неожиданным поведением. Однако не смогли удержаться и все-таки добавили несколько новых вещей :)
Если коротко, то:
- GoLand 2019.3 потребляет меньше ресурсов процессора и работает гораздо быстрее, чем раньше.
- Расширили поддержку Go Modules.
- Добавили множество новых быстрых исправлений и возможностей для рефакторинга.
- Инспекции показывают только самые подходящие быстрые исправления для конкретного участка кода.
- Теперь можно отлаживать приложения удаленно с помощью Mozilla rr на MacOS или Windows.
- Появилась глобальная настройка File Watchers по умолчанию для всех новых проектов.
- Поддержали MongoDB.
- Добавили интерактивные уроки в IDE: с одной стороны, это альтернативный способ узнать о новой функциональности, а с другой — возможность сразу опробовать ее в действии.
Производительность
Мы упорно трудились, чтобы IDE работала быстрее и потребляла меньше ресурсов. Основной результат — сократилось время запуска.
Обратите внимание, что результаты могут отличаться в зависимости от размера проекта, возраста устройства, объема оперативной памяти и дискового пространства.
Работа над улучшением производительности будет продолжаться и в следующих версиях.
![](https://habrastorage.org/webt/0m/7z/ur/0m7zurwfecevqrls2ll0u9kk73q.png)
Go Modules
В GoLand 2019.3 есть подсветка синтаксиса для файлов go.mod и навигация от имени импортируемого модуля к папке с его исходным кодом. Нажмите ?+B на MacOS или Ctrl+B на Windows/Linux на определенном пути импорта зависимостей, и GoLand переместит вас к его источникам в Project View.
Кроме того, Go Modules отображаются теперь с полным путем импорта, а их версии представлены приглушенным цветом шрифта в окне Project View.
![](https://habrastorage.org/webt/8q/dq/7k/8qdq7kee0p_lsefqhh7lz0f21dy.gif)
Отладчик
Вызов метода встроенного поля
Evaluate Expression в отладчике теперь позволяет напрямую вызывать метод встроенного поля.
![](https://habrastorage.org/webt/7b/b-/c4/7bb-c4xlrkhnes0vd6rtsfkimna.png)
Удаленная отладка с помощью 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.
![](https://habrastorage.org/webt/rs/sr/5n/rssr5nfkc243cphczp9ilurgsx8.gif)
Новые быстрые исправления
Обработка неиспользуемых параметров
GoLand теперь подсвечивает имя и тип неиспользуемого параметра, или только имя, если тип задействован в реализации сигнатуры метода.
В последнем случае IDE предоставляет два быстрых исправления на выбор: Delete parameter names и Rename to _. Такое же поведение предусмотрено для функций и методов, используемых в качестве функционального типа.
Чтобы удалить все неиспользуемые параметры за один раз, нажмите Alt+Enter и воспользуйтесь быстрым исправлением Delete all unused parameters.
![](https://habrastorage.org/webt/mc/ft/sv/mcftsvavvmzrn475snze1lq3osm.gif)
Создание отсутствующего метода или функции
Если функция или метод, которые не были объявлены ранее, используются в качестве функционального литерала, то GoLand предложит создать их. Просто нажмите Alt+Enter и выберите Create method/function.
![](https://habrastorage.org/webt/90/3e/qr/903eqr118y2fz_we1o9pvbo2k48.gif)
Улучшенная обработка псевдонимов пакетов
Теперь GoLand предлагает импортировать пакеты на основе используемых псевдонимов через Alt+Enter в любом файле проекта.
![](https://habrastorage.org/webt/xp/wd/_h/xpwd_hvece4gmdfi7obp5jjadk0.gif)
Рефакторинги
Change Signature
Change Signature теперь всегда показывает типы параметров во вкладках Parameters и Result parameters. Для объединения одинаковых типов параметров в сигнатуре пригодится опция Reuse Types.
Кроме того, вы найдете два новых Intention actions: Reuse signature types объединит все одинаковые определения параметров в одном объявлении, а Expand signature, наоборот, добавит типы к каждому параметру через Alt+Enter.
![](https://habrastorage.org/webt/xo/-o/91/xo-o91f1qbgxiay2z5_v9js43aa.gif)
Extract Variable и Rename
Extract Variable и Rename предлагают подходящие имена для переменных, анализируя контекст. Например, err для выражения с обработкой ошибки, ctx — для context.Context и так далее.
![](https://habrastorage.org/webt/4z/ar/we/4zarwetdbd0rieyaqpyxbrq2nkq.gif)
Инспекции кода
Инспекции кода теперь работают прицельнее. Мы сократили диапазон выделения потенциальных проблем в редакторе, чтобы при вызове контекстного меню через Alt+Enter показывать только самые подходящие быстрые исправления для конкретного участка кода.
![](https://habrastorage.org/webt/6j/c-/5b/6jc-5blsj7g2wjayvrlkcbwuel0.gif)
Редактирование кода
Улучшения работы редактора с rune-литералами
Мы улучшили работу редактора с rune-литералами:
- GoLand предоставляет более четкое и краткое сообщение об ошибке, объясняющее, почему выражение неверно.
- GoLand не выделяет корректный rune-литерал как ошибку после редактирования.
- Обработка неправильных rune-литералов более стабильна.
![](https://habrastorage.org/webt/pb/xm/6_/pbxm6_ia-aqsxrofojpkrjrevyo.png)
Подсветка синтаксиса для переназначений
Go позволяет использовать существующие переменные в левой части коротких объявлений var. Таким образом, два выражения, которые выглядят одинаково, могут иметь разные значения. Чтобы это было легче заметить, мы добавили подсветку синтаксиса для переназначений.
![](https://habrastorage.org/webt/b6/bs/kl/b6bskl726nt3yr-7znyqlzwocdk.png)
Сворачивание блоков кода для составных литералов
В GoLand 2019.3 можно сворачивать блоки кода для составных литералов. Используйте переключатели, чтобы сложить или разложить фрагмент кода (либо нажмите Ctrl+NumPad Minus/Ctrl+NumPad Plus на Windows или ?+NumPad Minus/?+NumPad Plus на MacOS). Чтобы настроить поведение сворачивания блоков кода, перейдите в Settings/Preferences | Editor | General | Code Folding.
![](https://habrastorage.org/webt/wc/ej/zv/wcejzvzs6bgpplhxwdoigmlelpm.png)
Live Templates
Live Templates for и forr предлагают осмысленные имена для переменных, meth — для ресивера. Например, для индекса будут предложены имена i и index; для переменной — s, string или line.
![](https://habrastorage.org/webt/f6/fq/gt/f6fqgtcx591qetp1bpofpim0y0c.gif)
Навигация
Поиск только в выбранной области
С помощью действия Find (?+F на MacOS и Ctrl+F на Windows/Linux) теперь можно искать необходимый фрагмент кода в ограниченной области. Выделите нужный фрагмент в редакторе и вызовите Find — GoLand выполнит поиск только в выбранной области. Чтобы легко переключиться на поиск по всему файлу, нажмите ?+F/ Ctrl+F во второй раз или используйте опцию In Selection в панели инструментов.
![](https://habrastorage.org/webt/bl/e8/ak/ble8ak_gpnxbtk1vblbqjcptc4a.gif)
Использование ‘Find in Path’ с файловой маской
Теперь при использовании диалога Find in Path с опцией file mask GoLand показывает расширения файлов в результатах поиска, чтобы было проще различать файлы с одинаковыми именами.
![](https://habrastorage.org/webt/y6/tm/88/y6tm8804b0sr7tag31-fdse9nee.png)
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, а затем установите флажок рядом с ним, чтобы включать его во все новые проекты.
![](https://habrastorage.org/webt/qy/6q/k-/qy6qk-qgfz8sxn_cfk8qz7l7yiq.png)
Интерактивные уроки
Когда дедлайн на носу, нет времени изучать What's New, release notes, читать новую статью о продукте. Поэтому мы добавили интерактивные уроки — они помогут вам узнать о функциональности GoLand, когда для этого будет подходящий момент.
Уроки находятся на экране приветствия над списком проектов. После обновления IDE до новой версии там появится урок о новом выпуске. Кроме того, Tutorials можно открыть с помощью окна инструментов из любого проекта.
![](https://habrastorage.org/webt/oi/lb/e4/oilbe48bjznd0p8yehhzvw83i6g.gif)
Разное
Hierarchy
В окне Hierarchy появилась возможность анализа иерархии вызовов метода. Две новые кнопки позволяют переключаться между методами, которые вызываются из текущего или вызывают текущий метод. Также теперь можно сортировать элементы дерева в алфавитном порядке. Чтобы увидеть Hierarchyв списке Tool Windows, необходимо сначала построить иерархию, а затем перейти в меню Navigate | Call Hierarchy or Navigate | Type Hierarchy.
![](https://habrastorage.org/webt/cg/a_/kg/cga_kgzbjqyoxscwvhhlgajhxma.gif)
Установка плагинов тем и раскладки клавиатуры на лету
В GoLand 2019.3 можно устанавливать и удалять плагины раскладки клавиатуры и плагины цветовых схем без перезапуска IDE.
![](https://habrastorage.org/webt/fi/dp/pv/fidppv_pkahcy7p3rc6doiausz4.gif)
Пользовательский шорткат для возврата фокуса в редактор
Можно задать свой шорткат для действия, которое возвращает фокус обратно в редактор, вместо использования кнопки ESC. Найдите действие Focus Editor в разделе Preferences/Settings | Keymap, щелкните на нем правой кнопкой мыши и выберите Add Keyboard Shortcut из раскрывающегося меню.
![](https://habrastorage.org/webt/le/ey/cn/leeycnlg41alwgukhjaee4bdznm.png)
Контрастные полосы прокрутки
Мы добавили возможность сделать полосы прокрутки более видимыми. Для этого установите флажок Use contrast scrollbars в разделе Preferences/Settings | Appearance & Behavior | Appearance.
![](https://habrastorage.org/webt/je/dy/s0/jedys0j5mhxgq3apaa6rnkxewza.gif)
Улучшения в поддержке VCS
Обновленный диалог Clone
Новое диалоговое окно Clone расположено под VCS | Get from Version control. Теперь вы можете войти в аккаунт на GitHub прямо из обновленного диалога. Если вы уже вошли в систему, IDE мгновенно покажет списки всех репозиториев, сгруппированных по учетным записям или организациям, в которых вы состоите.
![](https://habrastorage.org/webt/i0/pa/i-/i0pai-uom5_tjatevodv_18vz0i.png)
Информация о причинах конфликтов слияния
При возникновении конфликтов во время действий merge, rebase и cherry-pick теперь можно подробнее узнать об источнике изменений в диалоге Merge. Просто нажмите Show Details, чтобы просмотреть список коммитов, которые привели к текущему состоянию кода.
![](https://habrastorage.org/webt/gy/pa/k2/gypak2sobr_qee0dqxl012_fczw.gif)
Улучшения в поддержке баз данных
Поддержка MongoDB
В GoLand 2019.3 реализована начальная поддержка MongoDB. Теперь вы можете:
- Просматривать коллекции и поля в проводнике базы данных.
- Просматривать коллекции в табличном виде по страницам. Можно сортировать по значениям и использовать фильтр.
- Запускать запрос: поставьте на него каретку и нажмите Ctrl/Cmd+Enter или кнопку Run на панели инструментов.
![](https://habrastorage.org/webt/c5/jx/gw/c5jxgwtmwpnpgppfruonqodf4vw.png)
Поиск ошибок подключения с помощью Google
Начать исследовать ошибки подключения теперь можно нажатием всего одной кнопки в IDE — и GoLand откроет результаты об ошибке в поисковике Google.
![](https://habrastorage.org/webt/jj/oc/th/jjocthf0z6ecz0uwxvsz6_yhfe8.png)
Вот и всё! Спасибо, что дочитали до конца! Будем рады вашим отзывам и постараемся ответить на любые вопросы. Пишите нам здесь в комментариях, в Twitter или в баг-трекер.
Ваша команда JetBrains GoLand
The Drive to Develop
Комментарии (16)
artspb
11.12.2019 16:13+1В GoLand 2019.3 есть подсветка синтаксиса для файлов go.mod и навигация от имени импортируемого модуля к папке с его исходным кодом.
Минутка рекламы: поддержкаgo.mod
файлов написана студентом, который проходил в JetBrains весеннюю и летнюю практики, после чего остался в компании. Присоединяйтесь!
kowack
11.12.2019 17:09В «Code folding», как по мне, не хватает «One line returns» только для возврата ошибки.
artspb
11.12.2019 17:31Это как? Если возвращается ошибка, то сворачивать, а иначе оставлять три строчки?
kowack
12.12.2019 15:07Да, очень часто можно встретить конструкцию
if err != nil { return err }
При этом остальные блоки, в которых может идти возврат, к примеру, и слайса байт, и функции которая вернёт слайс байт, и просто nil — хочется видеть целиком и с подсветкой синтаксиса.
david_mz
11.12.2019 19:01Скажите пожалуйста, можно ли из IDEA Ultimate и плагина сделать IDE, аналогичную GoLand? Или есть какие-то фичи, которые только GoLand?
katezharova Автор
11.12.2019 19:14+1Вся функциональность GoLand есть плагине к IntelliJ IDEA Ultimate.
artspb
11.12.2019 19:16IDEA Ultimate с Go-плагином по фичам эквивалентна GoLand. Есть небольшая разница в UI, т.к. он заточен под Java: модули, JDK, вот это все. По функциональности разницы нет, разве что может понадобиться доставить плагины вроде Go Templates.
VolCh
13.12.2019 04:35А можно из Idea удалить модуль Java? А то хочется иметь одну IDE для проекта со многими яыками, но не используемая Java в UI c бывает.
Или для обладателей лицензий Goland и PhpStorm добавлять плагины PHP или Go в них?
UncleAndy
Сразу бросились в глаза свернутые по умолчанию короткие блоки if обработки ошибок. Довольно удобно для восприятия кода.