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

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

AntiCopyPaster: выделение дубликатов кода в момент их появления

March 15

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

Одним из способов борьбы с клонами в коде является рефакторинг «Извлечение метода»: необходимый фрагмент кода извлекается в отдельный метод, а его клоны заменяются на вызовы данного метода. В то же время, несмотря на то, что такая возможность часто есть, это требует от разработчика отдельных усилий: необходимо сесть, найти клоны и применить к ним рефакторинг, порой принимая решения о старом коде, находу вспоминая, что он делает.

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

Докладчики: Ярослав Голубев и Зарина Курбатова.

Язык доклада: русский.

Дата и время: 15-е марта, 18:00.

https://us02web.zoom.us/j/509624984?pwd=dFhRUlowSWprSVAva0JFQ2NUVzZTdz09

Meeting ID: 509 624 984

Passcode: 016883