«Поиск шаблонов в программном коде» Автор: студент 445 группы Евгений Куделевский Руководитель: к.ф.-м.н., ст. разработчик компании JetBrains Максим Мосиенко Основные понятия Шаблон ◦ Привязан к языку программирования Шаблонные переменные ◦ Значения – различные сущности языка ◦ На значения могут накладываться ограничения Отношение соответствия ◦ Множество значений шаблонных переменных ◦ Отношение эквивалентности на множестве фрагментов кода ◦ Различные ограничения Применения поиска по шаблону Извлечение знаний о коде (reverse engineering) Инспекция кода Нахождение дубликатов Цель работы Разработать метод поиска шаблонов программного кода ◦ Ориентация на поиск по запросу ◦ Значения переменных – различные синтаксические единицы ◦ Учет простейшей семантики языковых конструкций ◦ Расширяемость реализации Реализовать метод для языков JavaScript и ActionScript Обзор существующих подходов Синтаксический подход ◦ Значения шаблонных переменных - любые синтаксические конструкции ◦ Можно учитывать семантику ◦ Низкая эффективность Лексический подход ◦ Значения шаблонных переменных – лексемы и последовательности лексем ◦ Сложно учитывать простейшую семантику ◦ Высокая эффективность Описание метода Комбинация лексического и синтаксического подходов Допускает синтаксические конструкции в качестве значений переменных Позволяет учитывать семантику языковых конструкций Более эффективен, чем синтаксический подход Не привязан к конкретному языку Результаты Разработан новый метод поиска шаблонов ◦ Ориентирован на поиск по запросу ◦ Допускает в качестве значений шаблонных переменных синтаксические конструкции ◦ Позволяет учитывать семантику ◦ Имеет преимущества перед существующими методами ◦ Допускает расширяемость реализации На основе метода реализован механизм поиска по шаблону для языков JavaScript и ActionScript, работающий внутри среды IntelliJ IDEA