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