«Поиск шаблонов в программном коде»

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