Интегрированная среда разработки ПО IntelliJ компании JetBrains внедряет машинное обучение для автоматического завершения кода. Дорожная карта JetBrains IDE IntelliJ 2020 ускоряет машинное обучение, а также включает совместное редактирование и упрощенную обработку текстов.
Дорожная карта
По словам разработчиков, дополнительные возможности автозавершения кода позволили бы лучше использовать контекст для генерации вариантов завершения, выходящие за пределы одного только идентификатора. JetBrains вкладывает большие средства в разработку машинного обучения для своей среды разработки, но может пройти некоторое время, прежде чем в продукте появятся эти возможности.
Компания давно исследует использование машинного обучения. Ее продукты уже извлекают выгоду из некоторых результатов этого исследования. Текущие версии IntelliJ IDEA используют машинное обучение для ранжирования вариантов завершения. Языковые плагины помечают произведенные варианты атрибутами, а машинное обучение определяет какие атрибуты должны способствовать ранжированию, чтобы самые релевантные элементы отображались вверху списка.
В этом году разработчики собираются развернуть дополнительные функции. Они работают над системой, чтобы лучше использовать контекст для ранжирования предложений и генерировать варианты завершения, которые выходят за пределы одного идентификатора. Важно, чтобы предлагаемые варианты всегда имели смысл, поэтому может пройти некоторое время, прежде чем в продукте появится завершение полной строки.
Глубокое понимание кода
IntelliJ IDEA анализирует код в поисках связей между символами во всех файлах проекта и языках. На основе этой информации, среда разработки обеспечивает всестороннюю помощь в кодировании, быструю навигацию, умный анализ ошибок и рефакторинг.
Умное завершение дает список самых значимых символов, применяемых в текущем контексте. Это и другие дополнения все время учатся у пользователя, перемещая элементы часто используемых классов и пакетов в начало списка предложений.
Завершение цепи работает чуть глубже и перечисляет соответствующие символы, доступные через методы получения в текущем контексте.
Завершение статических членов позволяет использовать статические методы или константы. Предлагает список символов, соответствующих вводу, и автоматически добавляет необходимые операторы импорта.
Анализ потока данных используется, чтобы угадать возможный тип символа, и уточняет варианты выбора на основе этой информации, автоматически добавляя приведение классов.
Языковая инъекция предоставляет помощь в кодировании для выбранного языка в выражениях и строковых литералах в другом языке. Например, можно вставить фрагменты кода SQL, XPath, HTML, CSS или JavaScript в литералы Java String.
Кросс-языковые рефакторинги позволяют при переименовании класса обновлять все, от класса сущности, до каждого выражения, в котором он используется.
Обнаружение дубликатов находит дубликаты фрагментов кода на лету.
Инспекции и быстрые исправления автоматически оповещают о допущенных ошибках и предлагают варианты действий.
Другие особенности
Кроме автозавершения кода, JetBrains объявил о других улучшениях для IntellIj в 2020 году:
- Поддержка совместного редактирования. Пользователи смогут подключать свои IDE к основной системе в качестве «тонких клиентов» без необходимости прямого доступа к исходному коду. У каждого пользователя будет свое состояние с набором открытых файлов, позицией вставки, списком вариантов завершения и другими возможностями.
- Широкое использование IDE в качестве легкого текстового редактора. Специальный режим для редактирования файлов, не связанных с проектом, также находится в стадии разработки.
- Два режима интеграции с Git. Разработчики смогут переключаться с нового пользовательского интерфейса, который будет поддерживать «область размещения», на текущий интерфейс на основе списков изменений. Сочетание обоих режимов одновременно не представляется возможным.
- Более простая настройка среды и интеграции. Система установит Git, Java SDK и т. д.
- Дальнейшая интеграция в облако.
- Модель проекта переработана с целью устранения текущих ограничений, таких как отсутствие поддержки произвольного смешения проектов разных типов. Среди преимуществ JetBrain выделяет, в частности, более быстрое открытие проектов и более плавную синхронизацию с Maven и Gradle.
- Улучшена производительность индексирования. Пользователи также будут уведомлены в случае индексации аномалий.
- Пересмотр модели потоков блокировки чтения/записи для решения проблемы зависаний пользовательского интерфейса.
- Во время автоопределения больше не обнаруживаются изменения кода. Например, можно будет обнаружить изменения в объявлении метода, и соответствующим образом настроить использование.
- Поддержка загрузки и выгрузки большинства плагинов без перезапуска. Цель состоит в том, чтобы иметь IDE, которая рассчитана для каждого проекта. Например, проекты Spring будут загружаться только с плагинами, использующими Spring.
- Добавление возможностей Code Vision для отображения богатой контекстной информации в редакторе кода. Эта возможность уже интегрирована в IDE JetBrain для .NET.
- Локализация IDE на основе IntelliJ на азиатских рынках с первоначальной поддержкой упрощенного китайского языка. Поддержка корейского и японского языков будет следовать.
Напомним, что в прошлом году Microsoft представила инструменты, которые позволят разработчикам создать модель машинного обучения, не написав ни строчки кода.