80 likes | 278 Views
Автоматизированные преобразования кода в расширении Eclipse для языка haXe. Савенко Мария Олеговна, 461 группа Научный руководитель: старший преподаватель В.С.Полозов. Введение. Язык haXe Существующие IDE для haXe : FleshDevelop , EclihX , plug-in IntelliJ IDEA, plug-in FDT
E N D
Автоматизированные преобразования кода в расширении Eclipse для языка haXe Савенко Мария Олеговна, 461 группа Научный руководитель: старший преподаватель В.С.Полозов
Введение • Язык haXe • Существующие IDE для haXe: FleshDevelop, EclihX, plug-in IntelliJ IDEA, plug-in FDT • Выпускная работа Кондратьева А.Е. • Рефакторинг как часть IDE
Поставленные задачи • Создать инфраструктуру для поддержки рефакторинга в IDE: • Добавить поддержку работы с проектом и группой проектов • Добавить поддержку типов из библиотек haXe • Реализовать сбор информации обо всех использованиях какой-либо переменной, функции или пользовательском типе • Добавить возможность переименования пользовательских типов или объектов в зависимости от окружения
Средства рефакторингаEclipse • Базовый класс Сhange и его подклассы • Текстовые изменения • Изменения ресурсов • Обработчик – RefactoringProcessor • Отвечает за проверку условий корректности изменений • Создает изменения
Схема работы Visibility Checker Проверяет доступность команд и управляет видимостью пунктов меню Rename Сommand Вызывается из контекстного меню Отвечает за выбор обработчика Rename Processor Наследник Refactoring Processor Изменения на основе TextFileChange Сначала удаление старого имени, затем вставка нового
Результаты (графически) До переименования После переименования
Результаты (графически) До переименования После переименования
Результаты • Создана инфраструктура для поддержки рефакторинга в IDE: • В plug-in добавлена поддержка проекта и группы проектов • Библиотеки haXeобработаны и собраны в единый “.jar” архив • Реализован сбор информации обо всех использованиях какой-либо переменной, функции или пользовательском типе • Пересмотрена система типов • Добавлена возможность переименования пользовательских типов или объектов в зависимости от окружения