Программирование и разработка программного обеспечения

JetBrains предоставляет ИИ-агентам доступ к механизму рефакторинга в Rider

JetBrains протестировала ИИ-агентов на 15 задачах по рефакторингу кода C# и обнаружила, что предоставление специализированных навыков Rider сократило медианное время выполнения задачи со 157,9 до 26,6 секунды, а также уменьшило количество вызовов инструментов и стоимость. Функция доступна автоматически в Rider 2026.2.1 благодаря встроенному навыку refactoring-code.

2026-08-19
5 мин. чтения
225 просмотров
certi.news Editorial Team
JetBrains предоставляет ИИ-агентам доступ к механизму рефакторинга в Rider

Эксперимент, проведённый JetBrains, показал, что предоставление ИИ-агентам прямого доступа к механизму рефакторинга в Rider может коренным образом изменить выполнение задач на C#, вместо того чтобы заставлять агента изменять текст, а затем запускать компилятор, чтобы выяснить, что именно испортили изменения. В тесте, включавшем 15 задач, медианное время выполнения задачи сократилось со 157,9 до 26,6 секунды, то есть на 83%, а количество вызовов инструментов уменьшилось с 17 до 6,2 на задачу.

Эта возможность реализована во встроенном навыке под названием refactoring-code, доступном в Rider начиная с версии 2026.2.1. По данным JetBrains, пользователю не нужно активировать его вручную: агент автоматически вызывает навык, когда его просят выполнить рефакторинг кода C#. Механизм использует технологии ReSharper и аналитическую архитектуру Rider для понимания связей между символами и ссылками внутри проекта.

Проблема подхода «изменить, затем собрать»

До появления навыка JetBrains наблюдала за передовой моделью во время выполнения тех же задач. За 2513 вызовов различных инструментов агент не выполнил ни одной непосредственной структурной операции рефакторинга, поскольку у него не было специализированного инструмента для этого. Вместо этого он 468 раз использовал интерактивные команды для ввода текста, 422 раза вызывал git и 392 раза — sed, а также 163 раза запускал dotnet build.

Это не означает, что агент избегал рефакторинга: он пытался приблизить его с помощью поиска и текстового редактирования, а затем использовал результаты сборки для оценки произошедшего. JetBrains поясняет, что, например, переименование символа требует различать ссылки, связанные с определённым определением, вызовы полиморфных методов, частичные классы, явные реализации интерфейсов и ссылки в документации. Эти связи невозможно надёжно обеспечить с помощью регулярного выражения.

В свою очередь, механизм Rider работает с разрешённым синтаксическим деревом, которое определяет, с каким определением связан каждый идентификатор, какую версию вызывает каждый вызов и где находятся ссылки в программном решении. Таким образом, структурная часть задачи передаётся механизму, вместо того чтобы агент постепенно обнаруживал эти связи посредством повторяющихся циклов редактирования, сборки и чтения ошибок.

Что измеряла JetBrains?

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

  • Переименование символа и всех ссылок на него.
  • Извлечение набора инструкций в новую функцию.
  • Извлечение интерфейса из существующего типа.
  • Извлечение базового класса и перенос в него членов.
  • Изменение сигнатуры программного интерфейса и обновление мест вызова.
  • Перенос типа в другое пространство имён и исправление операторов using.
  • Реорганизация пространств имён в соответствии со структурой папок.
  • Безопасное удаление символа, если от него не зависит ни одна другая часть.

Задачи включали как простые случаи, так и более сложные — с большим количеством мест вызова или переплетёнными зависимостями. Обе стороны запускали одну и ту же модель, gpt-5.5, через Codex CLI примерно десять раз для каждой задачи. Единственным различием было наличие или отсутствие навыка refactoring-code. Сравнение основывалось на зарегистрированных результатах и парном permutation-тесте.

Практические результаты и стоимость

После активации навыка количество операций dotnet build сократилось со 163 до всего трёх, а общее число вызовов инструментов в оценке уменьшилось с 2513 до 926. Текстовые изменения не исчезли: sed по-прежнему оставался наиболее используемым инструментом, однако распределение ролей изменилось. Обычные изменения выполнялись с помощью инструментов текстового редактирования, тогда как механизм обрабатывал структурные изменения, последствия которых могли распространяться на части, непосредственно невидимые агенту.

Время на 95-м процентиле сократилось с 346,4 до 56,9 секунды; это особенно связано с исчезновением случаев, застревавших в цикле редактирования, сборки и обработки ошибок. Медианная стоимость одной задачи снизилась с 0,33 до 0,12 доллара, а стоимость каждой успешной задачи — с 0,52 до 0,19 доллара. Число введённых токенов также уменьшилось с 436 745 до 208 524 на задачу, количество чтений временной памяти — с 2 973 158 до 1 257 600, а объём вывода — с 32 532 до 15 538.

Что это означает для пользователей?

Эксперимент показывает, что польза инструментов для агентов зависит не только от способности модели создавать код, но и от типа инструментов, которые она может вызывать. В восьми из 15 задач сторона с доступом к навыку была быстрее и дешевле и не использовала больше инструментов, при этом обе стороны успешно проходили тесты. В шести задачах, выполнение которых в базовом режиме занимало более двух минут, улучшение составило от 82 до 94%.

Однако результаты не означают общего выигрыша для каждого случая. Обе стороны не справились с двумя задачами, базовый режим успешно выполнил одну задачу, с которой не справился режим с навыком, а четыре задачи изначально выполнялись настолько быстро, что вызов механизма Rider оказался экономически нецелесообразным. Поэтому эти цифры подтверждают эффективность навыка для определённого набора операций рефакторинга, но не гарантируют одинакового улучшения для каждой задачи.

Чтобы показать разницу, JetBrains представила задачу по извлечению базового класса из типа ReportExporter. Без навыка выполнение заняло 336,7 секунды, потребовало 24 вызовов и стоило 1,15 доллара; оно включало несколько циклов изменения файлов и запуска сборки для обработки ошибок наследования, конструкторов и прав доступа. С навыком задача заняла 19,8 секунды, потребовала три вызова и стоила 0,09 доллара: агент выполнил операцию extract_base_class, создал ExporterBase, обновил четыре файла и переписал 11 ссылок.

Функцию можно попробовать, обновив Rider до версии 2026.2.1, открыв решение C# и попросив агента переименовать элемент, извлечь интерфейс или переместить тип. В статье рекомендуется формулировать запросы с указанием конкретной операции, например попросить извлечь интерфейс из OrderProcessor, а не использовать общую формулировку вроде «приведи этот класс в порядок».

Источник новости
c
Автор

certi.news Editorial Team

Что важно знать

JetBrains предоставила ИИ-агентам доступ к движку рефакторинга в Rider через встроенный навык refactoring-code. Согласно тестированию JetBrains, это сократило время и стоимость ряда задач по рефакторингу кода C#, однако результаты не гарантируют улучшения для каждой задачи.

  • Навык refactoring-code автоматически доступен в Rider 2026.2.1 при запросе на выполнение рефакторинга кода C#.
  • JetBrains протестировала функцию на 15 задачах; медианное время сократилось со 157,9 до 26,6 секунды.
  • Среднее число вызовов инструментов уменьшилось с 17 до 6,2 на задачу, а число операций dotnet build — со 163 до 3.
  • Движок использует технологии ReSharper и аналитическую структуру Rider для понимания определений, ссылок и структурных взаимосвязей.
  • В число операций входили переименование символов, извлечение интерфейсов и базовых классов, изменение сигнатур, перемещение типов и реорганизация пространств имён.
  • Обе стороны потерпели неудачу в двух задачах, а некоторые изначально быстрые задачи получили меньшую выгоду от вызова движка Rider.

Частые вопросы

Как опробовать эту функцию?

Обновите Rider до версии 2026.2.1, откройте решение C# и попросите агента выполнить конкретную операцию, например переименовать элемент, извлечь интерфейс или переместить тип.

Нужно ли вручную включать навык refactoring-code?

Нет. JetBrains сообщает, что навык встроен и доступен автоматически; агент вызывает его при запросе на рефакторинг кода C#.

Чем использование навыка отличается от традиционного редактирования текста?

Навык передаёт структурные изменения движку Rider, который анализирует определения, ссылки и взаимосвязи, вместо того чтобы в основном полагаться на редактирование текста, последующую сборку и чтение ошибок.

Изучить сюжет

Связанные темы и сущности

В той же категории

Вам также может понравиться

Все новости