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

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

AntyCopyPaster

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

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

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

Участники

Публикации

AntiCopyPaster: Extracting Code Duplicates As Soon As They Are Introduced in the IDE

Октябрь 2022

Eman Abdullah AlOmar, Anton Ivanov, Zarina Kurbatova, Yaroslav Golubev, Mohamed Wiem Mkaouer, Ali Ouni, Timofey Bryksin, Le Nguyen, Amit Kini, and Aditya Thakur

Подробнее