company_banner

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

    Привет, Хабр!


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




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


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


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


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

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


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


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


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





    Go Modules


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


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





    Отладчик


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


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





    Удаленная отладка с помощью 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 теперь подсвечивает имя и тип неиспользуемого параметра, или только имя, если тип задействован в реализации сигнатуры метода.


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


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





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


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





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


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





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


    Change Signature


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


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





    Extract Variable и Rename


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





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


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





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


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


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


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




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


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





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


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





    Live Templates


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





    Навигация


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


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





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


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





    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, а затем установите флажок рядом с ним, чтобы включать его во все новые проекты.





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


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


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





    Разное


    Hierarchy


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





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


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





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


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





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


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





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


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


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





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


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





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


    Поддержка MongoDB


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


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




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


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





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


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


    The Drive to Develop

    JetBrains
    Делаем эффективные инструменты для разработчиков

    Комментарии 18

      +2
      Сразу бросились в глаза свернутые по умолчанию короткие блоки if обработки ошибок. Довольно удобно для восприятия кода.
        +2
        В GoLand 2019.3 есть подсветка синтаксиса для файлов go.mod и навигация от имени импортируемого модуля к папке с его исходным кодом.

        Минутка рекламы: поддержка go.mod файлов написана студентом, который проходил в JetBrains весеннюю и летнюю практики, после чего остался в компании. Присоединяйтесь!
          0
          В «Code folding», как по мне, не хватает «One line returns» только для возврата ошибки.
            0
            Это как? Если возвращается ошибка, то сворачивать, а иначе оставлять три строчки?
              0
              Да, очень часто можно встретить конструкцию
              if err != nil {
                  return err
              }

              При этом остальные блоки, в которых может идти возврат, к примеру, и слайса байт, и функции которая вернёт слайс байт, и просто nil — хочется видеть целиком и с подсветкой синтаксиса.
                0
                Я думаю, мы лучше сделаем по-другому: будем прятать только фигурные скобки, а содержимое останется частью редактора. Тогда и подсветка появится, и редактировать можно будет не раскрывая фолдинг (см. GO-8600). Мы так для Java поступаем с методами-однострочниками.

                  +1
                  О, это было бы здорово! Спасибо.
                    0
                    Только go fmt обратно все развернет, такие уж вкусы у авторов.
                      0
                      Фолдинги сам код не меняют: он как занимал несколько строчек, так и занимает. Они меняют только представление в редакторе. Так что go fmt остается без работы :)
            0
            Скажите пожалуйста, можно ли из IDEA Ultimate и плагина сделать IDE, аналогичную GoLand? Или есть какие-то фичи, которые только GoLand?
              +1
              Вся функциональность GoLand есть плагине к IntelliJ IDEA Ultimate.
                0
                Спасибо!
                0
                IDEA Ultimate с Go-плагином по фичам эквивалентна GoLand. Есть небольшая разница в UI, т.к. он заточен под Java: модули, JDK, вот это все. По функциональности разницы нет, разве что может понадобиться доставить плагины вроде Go Templates.
                  0

                  А можно из Idea удалить модуль Java? А то хочется иметь одну IDE для проекта со многими яыками, но не используемая Java в UI c бывает.


                  Или для обладателей лицензий Goland и PhpStorm добавлять плагины PHP или Go в них?

                    +1
                    Goland ещё работает гораздо шустрее. Комп обновил, но все равно на последнем поколении процессора idea то там то тут подвисает, с goland все заметно лучше почему-то.
                      0
                      Пока Java-плагин полностью отключить нельзя. Поставить PHP в GoLand и наоборот тоже нельзя, так что пока единственным вариантом, поддерживающим большинство языков, остается IDEA.
                  0
                  Не планируется ли выпуск Community версии, по аналогии с IDEA?
                    0

                    Нет.

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое