Исследовательская группа

Методы машинного обучения в области программной инженерии

AntyCopyPaster

Тимофей БрыксинАктивный

В этом проекте мы разрабатываем и создаем AntiCopyPaster — плагин для IntelliJ IDEA, который отслеживает вставку кода внутри IDE и предлагает соответствующие рефакторинги "Извлечение метода" для борьбы с распространением дубликатов. Для реализации плагина мы собрали набор данных фрагментов кода, которые следует и не следует извлекать, составили список метрик кода, которые могут повлиять на решение, и обучили несколько популярных классификаторов, из которых Random Forest показал наилучшие результаты. Когда разработчик вставляет фрагмент кода, плагин ищет дубликаты в текущем открытом файле. Если они есть, он ожидает в течение короткого периода времени, чтобы разработчик мог отредактировать код. Если дубликаты кода все еще присутствуют после задержки, AntiCopyPaster вычисляет метрики для фрагмента и принимает решение: если фрагмент должен быть извлечен, плагин предлагает провести его рефакторинг.

Плагин доступен на GitHub.

Участники