Что нового в GoLand

В GoLand 2020.1 вы найдете улучшенную поддержку Go Modules, множество новых видов автодополнения и редактирования кода на лету, расширенное семейство Smart Code Completion и Basic Code Completion.

Мы также подготовили для вас новые инспекции кода, быстрые исправления и много других улучшений. Среди них: режим LightEdit, который позволяет открыть файл в текстовом редакторе без создания или загрузки проекта, интеллектуальная проверка орфографии и грамматики, новые возможности для работы с базами данных и веб-разработки.

Предпочитаете узнавать о новой функциональности в интерактивной форме? Пройдите урок Features of GoLand 2020.1 прямо в IDE.

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

При настройке GOPROXY GoLand предлагает установить значения direct и off в новом диалоге Environment Variables.

Мы поддержали переменные окружения GOPROXY, GOPRIVATE, GOSUMDB, GONOPROXY и GONOSUMB из версии Go 1.13.

Вы можете устанавливать значения для них в шаблоне проекта Go Modules. Кликните на иконку Browse в поле Environment, чтобы открыть новое окно Environment Variables.

Автодополнение для оператора replace, имен зависимостей и локальных путей в 'replace'

Автодополнение для операторов go, module, require, replace, exclude, имен зависимостей и локальных путей в 'replace' директивах для файла go.mod.

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

Рефакторинги Rename и Move теперь тоже в деле. Когда вы переименовываете или перемещаете директории, указанные внутри операторов replace, GoLand автоматически изменит их путь в файле go.mod.

Использование Find Usages для поиска конкретной директории в файле go.mod.

Теперь вы также можете вызвать Find Usages в Project View, чтобы исследовать, где используется путь к конкретной директории в файле go.mod.

GoLang предлагает удалить неиспользуемые зависимости и загрузить недостающие с помощью Alt-Enter.

Загружайте недостающие зависимости и удаляйте неиспользуемые на лету с помощью Alt-Enter.

GoLand предупреждает о коммите go.mod файла с локальными путями в директиве replace.

Последнее, но не менее важное, новая версия предупредит вас перед коммитом go.mod файла с локальными путями в replace директиве.

Типы автодополнения кода, которые работают на лету

Завершение обработки ошибок с помощью ввода if внутри функции.

GoLand 2020.1 предлагает if err != nil { ... }, если видит, что вы пишете код обработки ошибки. Просто напишите if внутри выражения.

Объявление 'struct' и 'interface' с помощью автодополнения.

Определяйте структуры и типы интерфейсов, просто указав ключевое слово type или struct и interface.

Действие Fill Fields добавляет пробелы после двоеточия.

Действие Fill Fields добавляет пробелы после двоеточия, когда этого требуют правила форматирования. Действие также автоматически поставит запятую в конце выражения с объявлением составных литералов.

GoLand перемещает курсор за закрывающую скобку.

При создании словарей автодополнение переместит курсор за закрывающую скобку после того, как вы укажите тип ключа.

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

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

Smart Code Completion (Ctrl+Shift+Space)

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

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

GoLand предлагает совместимые типы для утверждения типа.

Также теперь автодополнение в первую очередь предложит совместимые типы для утверждения типа и переключателя типа.

GoLand предлагает тип присваиваемой переменной для утверждения типа.

Для утверждения типа автодополнение предлагает тип присваиваемой переменной.

GoLand предлагает варианты автодополнения для указателей в выражении.

Наконец, GoLand 2020.1 предложит варианты автодополнения для указателей в выражении.

Basic Code Completion (Ctrl+Space)

GoLand подставляет имя функции в комментарии.

Basic Code Completion для комментариев значительно упрощает написание документации. Автодополнение предлагает имена для текущих объявлений пакета и имена параметров для функций и методов.

GoLand предлагает преобразовать выражение.

Кроме того, Basic Code Completion предлагает литералы и преобразования.

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

GoLand добавляет скобки вокруг типа int после постановки запятой для ввода следующего типа.

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

GoLand экранирует кавычки при вставке текста в строковый литерал.

Когда вы вставляете текст в строковый литерал, IDE экранирует текст.

Чтобы узнать больше о функциях редактирования кода, которые работают без необходимости что-либо делать, прочтите статью GoLand Editing Features You Didn’t Know About.

Поддержка Go 1.14

Различия в поддержке перекрывающих интерфейсов между GoLand 2019.3 и 2020.1.

Поддержка перекрывающих интерфейсов

В Go 1.14 добавлена поддержка встраивания перекрывающих интерфейсов, и мы сразу же их поддержали. Когда вы описываете различные аспекты типа, использующего перекрывающие интерфейсы, GoLand не будет предупреждать о дублировании методов.

Новые настройки в разделе Go Modules

Автоматический вендоринг

Вендоринг включается автоматически в версии Go 1.14, если корень модуля содержит директорию vendor. Для GoLand 2020.1 мы решили реализовать аналогичное поведение для версии 1.13 и более ранних. IDE будет автоматически разрешать импорт в директорию vendor, если она присутствует в модуле.

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

Поддержка ярлыков профилировщика для навигации по горутинам в окне Debug.

Поддержка ярлыков профилировщика

Поддержка ярлыков профилировщика помогает быстрее ориентироваться в горутинах и анализировать дампы памяти.

Подробнее читайте в этой статье: How to Find Goroutines During Debugging.

Выбор макросов в диалоге Macros для поля Program arguments в Run/Debug Configurations.

Поддержка макросов

Теперь можно использовать макросы в качестве параметров для запуска или отладки приложения. В диалоге Run/Debug Configurations нажмите + в поле Go Tool или Program arguments, чтобы открыть новый диалог Macros со списком доступных макросов.

Кроме того, теперь вы можете хранить файлы с конфигурациями в проекте. Выберите опцию Store в верхней части диалога Run/Debug Configurations.

Постфиксное автодополнение

Шаблон .else в действии.

Шаблон .else добавляет оператор if, чтобы проверить, не является ли выражение ложным.

Быстрые исправления

Преобразование Println в Printf

Измените вызов без форматирования на вызов с форматированием с помощью Alt+Enter.

Create variable предлагает подсказку ожидаемого типа.

Быстрое исправление Create variable теперь предлагает подсказку ожидаемого типа, чтобы ускорить ввод правильного значения.

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

GoLand предупреждает о недопустимых вызовах методов с получателем-указателем на значениях, которые не являются указателями, и предлагает исправление.

Эта новая инспекция предупреждает о недопустимых вызовах методов с получателем-указателем на значениях, которые не являются указателями. Для обнаруженной проблемы предлагается быстрое исправление.

GoLand предупреждает о некорректном использовании unsafe.Pointer.

Проверка Invalid conversions of uintptr to unsafe.Pointer о потенциально опасном преобразовании между uintptr и unsafe.Pointer для преобразования целых чисел в указатели.

GoLand предупреждает, что аргумент в функции Unmarshal должен иметь тип указателя.

Проверка Unmarshal is called with incorrect argument анализирует вызовы json.Unmarshal и похожих функций из encoding/json, encoding/xml и encoding/gob пакетов.

GoLand предупреждает, что у аргумента должен быть тип указателя.

Инспекция Locks mistakenly passed by value помогает избежать случайного копирования значений типа sync.Locker.

Live templates

Объявление var и consts.

Мы добавили новые шаблоны, которые помогут вам быстро создавать группы объявлений. К ним относятся consts, vars, types и imports. При использовании одного из этих шаблонов GoLand добавит скобки вокруг имени объявления.

Шаблон fori в действии.

Шаблон fori вставляет код для классического for-loop.

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

Рефакторинг Extract Method сохраняет исходный порядок.

Рефакторинг Extract Method теперь сохраняет исходный порядок родительской функции и параметры метода.

Рефакторинг Rename предлагает варианты переименования через Alt+Enter.

Rename теперь автоматически определяет переименование объявления. Когда вы переименовываете объявление вручную, IDE покажет иконку в поле редактора. Кликнув на иконку, вы переименуете все использования разом.

Навигация

Find Usages показывает использования методов интерфейса.

Navigate to implementations (Ctrl+Alt+B) и Navigate to Declaration или Usages (Ctrl+B) теперь в первую очередь показывают результаты текущего проекта.

Кроме того, действие Find Usages (Alt+F7) теперь всегда ищет использования методов интерфейса по умолчанию. Для поиска использований текущего метода нажимайте Alt+Shift+Ctrl+F7.

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

Новое окно Commit с визуализацией изменений в редакторе.

Новое окно коммитов

Новое окно коммитов теперь включает вкладки Local Changes и Shelf. В нем можно выполнять все задачи, связанные с коммитами: просматривать различия, выбирать файлы и фрагменты кода для включения в коммит и писать сообщения к коммиту. Окно Commit вертикальное и располагается в левой части экрана — так все пространство редактора используется для визуализации изменений перед коммитом.

Окно Branches

Улучшенное окно Branches

Мы добавили в окно Branches несколько изменений:

  • В нем теперь есть явное поле поиска, в котором вы можете искать существующие удаленные и локальные ветки.
  • Можно использовать кнопку Refresh для обновления существующих удаленных веток.
  • В строке состояния появились индикаторы входящих (синие) и исходящих (зеленые) коммитов.
Окно Rebasing Commits

Обновленный диалог Interactively Rebase from Here

Мы существенно переработали Interactively Rebase from Here. Чтобы сделать историю коммитов более линейной и понятной, теперь вы можете редактировать, объединять и удалять ваши предыдущие коммиты.

Чтобы вызвать этот диалог, перейдите на вкладку Log окна Git, выберите старый коммит, который вы хотите отредактировать, щелкните по нему правой кнопкой мыши и выберите Interactively Rebase from Here.

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

Результаты отображаются в редакторе
  • Для запуска файлов скриптов и фрагментов кода, используйте Run configurations. Это позволяет запускать несколько файлов одновременно, реорганизовывать их, добавлять новые и запускать другие программы или конфигурации перед запуском.
  • Теперь результаты запросов к базе данных можно просматривать в редакторе. По умолчанию эта возможность отключена. Чтобы включить ее, перейдите по ссылке Settings/Preferences | Database | General | Show output results in the editor.
  • Теперь можно создать конфигурацию SSH один раз и использовать в нескольких источниках данных.
  • Мы добавили возможность экспорта данных в файл Excel.
  • Также вы можете выбрать предпочтительный формат данных для отображения в раскрывающемся списке экстракторов.

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

GoLand предлагает преобразовать код в optional chaining и/или nullish coalescing через Alt+Enter.

Новые действия и инспекции для JavaScript и TypeScript

Новые действия и инспекции (Alt+Enter) сэкономят ваше время. Например, можно быстро преобразовать код в optional chaining и/или nullish coalescing — синтаксис, появившийся в последних версиях JavaScript и TypeScript.

Всплывающее окно документации показывает тип символа и где этот символ определен.

Полезные данные в документации

Документация для JavaScript и TypeScript теперь содержит информацию о типе и видимости символа, а также о том, где этот символ определен.

Разное

Файл, открытый в редакторе в режиме LightEdit без создания или загрузки проекта.
  • JetBrains Mono, новый шрифт от JetBrains, доступен по умолчанию. Чтобы узнать больше о шрифте, посетите эту страницу.
  • Плагин Grazie, обеспечивающий интеллектуальную проверку орфографии и грамматики текста установлен по умолчанию.
  • Новый режим LightEdit позволяет открыть файл в текстовом редакторе без создания и загрузки проекта. Чтобы попробовать эту функциональность, сначала нужно создать инструмент запуска из командной строки. Для этого перейдите в Tools | Create Command-line Launcher и следуйте этой инструкции (если вы используете приложение JetBrains Toolbox App, шаги будут немного отличаться). Подробное описание того, как открывать файлы, сравнивать/объединять их и выполнять проверку кода, вы найдете в веб-справке.
  • Мы добавили новый режим Zen, который поможет вам сконцентрироваться на коде и ни на что не отвлекаться. По сути, он сочетает в себе Distraction Free Mode и Full Screen Mode. Чтобы включить новый режим, перейдите по ссылке View | Appearance | Enter Zen Mod или выберите его из всплывающего меню Quick Switch Scheme (Ctrl+` | View mode | Enter Zen Mode).
  • External Documentation теперь ведет к https://pkg.go.dev вместо https://godoc.org.
  • Мы вернули цветовую схему Default с новым именем — Classic Light.