Интерактивная языконезависимая система поиска шаблонов и дубликатов в программном коде Куделевский Евгений Валерьевич, 545 группа Научный руководитель:

Презентация:



Advertisements
Похожие презентации
«Поиск шаблонов в программном коде» Автор: студент 445 группы Евгений Куделевский Руководитель: к.ф.-м.н., ст. разработчик компании JetBrains Максим Мосиенко.
Advertisements

ЯЗЫКИ ПРОГРАММИРОВАНИЯ С РАСШИРЯЕМЫМ СИНТАКСИСОМ П.В. Егоров Екатеринбург, Июнь 2006.
Трансляция кода из Groovy в Java в IntelliJ IDEA Дипломная работа Медведева Максима Научный руководитель: Громов П. С.
Система контроля выполнения лабораторных работ и удаленного консультирования студентов Научный руководитель: Бочков Василий Викторович Выполнил: Бобрышев.
Выпускная квалификационная работа студента 545 группы Алеева Алексея Валерьевича Научный руководитель: аспирант, Е. А. Елизаров Рецензент: ведущий инженер,
Усовершенствование языка и компилятора Для системы фрагментированного программирования Крупин Сергей ФИТ НГУ 3 курс Руководитель: Перепёлкин Владислав.
Предметно-ориентированное моделирование приложений для платформы Android Никонова Ольга СПбГУ Научный руководитель Брыксин Т.А.
Поддержка разработки Parallels Business Automation в среде Eclispe Научный руководитель: Сергушенков Ю. А. Рецензент: доцент кафедры системного программирования,
М.Ю. Харламов, ВНУ им. В.Даля, Семантический анализатор Семантический анализатор выполняет следующие основные действия: проверку соблюдения во входной.
Java Puzzlers Автор: Фофанова Мария Руководитель: Симончик Сергей.
Применение технологии виртуальных миров при построении интерактивных обучающих систем Самарский государственный аэрокосмический университет имени академика.
Технология MVC в высоконагруженных проектах Андрей Шетухин Илья Космодемьянский.
Основы объектно-ориентированного программирования (ООП)
Кроссъязыковый рефакторинг « Изменение сигнатуры метода » Медведев Максим Юрьевич, 445 гр. Руководитель : Громов Петр Александрович.
Текстовый язык автоматного программирования В. С. Гуров, М. А. Мазин, А. А. Шалыто.
Генерация скрипта создания базы данных с учетом зависимостей Автор : Максим Масунов, 545 группа Санкт - Петербургский государственный университет Математико.
Saint Petersburg, 2012 Java Lecture #12 JSP. JSP 2 Java Server Pages (JSP) – технология разработки веб страниц, поддерживающих динамический контент. Позволяет.
Алгоритмическая и программная реализация методов приведенных направлений для высокопроизводительных систем. Бастракова О.В.
Докладчик: Бульёнов А. В., аспирант Научный руководитель: Шалыто А. А., д. т. н., профессор, зав. кафедрой КТ Методы автоматного программирования в разработке.
Разработка средств автоматического синтаксического анализа как модуля системы понимания текста Лахути Д.Г., Баталина А.М., Епифанов М.Е., Кобзарева Т.Ю.
Транксрипт:

Интерактивная языконезависимая система поиска шаблонов и дубликатов в программном коде Куделевский Евгений Валерьевич, 545 группа Научный руководитель: к.ф.-м.н. Мосиенко М.А.

Поиск дубликатов Известная задача программной инженерии Эквивалентность фрагментов кода Особенности конкретного языка Порядок элементов Опциональный синтаксис def int n = 1int n = 1def n = 1 Скобки и блоки (a * 3) + 1 a * if (b) { print s; } if (b) print s; Зависимость от языка программирования Подходы к решению Лексический Синтаксический

Поиск по шаблону Применения Извлечение знаний Инспекция кода Поиск с помощью регулярных выражений Сложность составления Не всегда возможно описать шаблон

Structural Search & Replace Шаблоны описываются на языке программирования, в котором предполагается производить поиск $output$.print($text$) Шаблонные переменные Значения – синтаксические единицы языка либо их последовательности if ($condition$) {$statements$} Дополнительные ограничения на значения переменных Замена на другой шаблон $var$ == 0 $var$ == null Связь с задачей поиска дубликатов

Цель работы Разработка и внедрение программного инструмента поиска, удовлетворяющего следующим критериям: Языконезависимость реализации Расширяемость. Возможность учитывать особенности конкретного языка программирования

Механизм работы поиска Синтаксический подход Поиск дубликатов Хэширование синтаксического дерева Хэширование блоков Функция стоимости Роли синтаксических конструкций Structural Search Компиляция шаблона Шаблонные переменные заменяются на идентификаторы Контекст разбора

Результаты: поиск дубликатов в IntelliJ IDEA Имелось средство поиска дубликатов для Java Реализован инструмент поиска для многих других языков Полная поддержка функциональности, которая имелась ранее для Java Языконезависимость. Простой механизм поддержки нового языка Добавлена поддержка языков PHP, Groovy, JavaScript и HTML

Результаты: Structural Search & Replace Имелась поддержка языков Java, HTML, XML и JavaScript Реализован инструмент поиска для многих других языков Полная поддержка функциональности, которая имелась ранее для Java, HTML, XML и JavaScript Языконезависимость. Простой механизм поддержки нового языка Добавлена поддержка языков PHP, Groovy и CSS

Возможности расширения Необходимая работа для поддержки нового языка Класс-наследник DuplicatesProfileBase Роли Блоки GroovyDuplicatesProfile: 47 строк Класс-наследник StructuralSearchProfileBase PhpStructuralSearchProfile: 50 строк Описание эквивалентности По умолчанию используется стандартная эквивалентность

Апробация Фреймворк MediaWiki 47 Мб кода на языках PHP, JavaScript, HTML и XML Поиск дубликатов Время работы: 95 сек. Найдено более 300 дубликатов Поиск шаблонов Время работы: сек. в зависимости от сложности шаблона

Результаты работы Разработан и внедрен языконезависимый и расширяемый программный инструмент поиска На основе существующего плагина Structural Search & Replace и движка поиска дубликатов для Java Возможно учитывать особенности конкретного языка Добавлена поддержка Groovy, PHP, JavaScript, CSS, HTML Проведено тестирование на реальном коде