Upload
others
View
18
Download
0
Embed Size (px)
Citation preview
CacheConf
CacheConf
Atelier – новая кросс-платформенная среда разработки. Взгляд изнутриАндрей Соболев -
Xored Software Inc.
CacheConf
• Возможности современных IDE • Atelier для пользователя• Обзор основных функций
• Atelier изнутри • DLTK и зачем он нужен • Сложности Caché
• Демонстрация • Вопросы?
Структура
CacheConf
ОбзорВозможности современных IDE
CacheConf
• Подсветка синтаксиса + семантическая подсветка • Удобные функции редактирования • Контекстные подсказки/авто дополнения/документация • Навигация по коду • Валидация/ошибки/исправления •Форматирование
Функции современных IDEОсновные функции
CacheConf
• Глобальный поиск и замена • Рефакторинг • Иерархии наследования • Иерархии вызовов методов • Отладка • Инфраструктура для тестирования • Глубокий анализ кода
Функции современных IDEРасширенные функции
CacheConf
AtelierОбзор основных функций
CacheConf
• Открытая платформа с богатой экосистемой • Системы контроля версий • Подсистема отладки • Рефакторинг/Анализ кода •Windows, Mac и Linux •Множество сторонних дополнений •Фреймворки для UI тестирования
Atelier и Eclipse
CacheConf
• Код на уровне клиента UDL • Пользовательское форматирование • Валидация и анализ кода
• Код в Проектах • Публикация на сервер по изменению • Индексация серверных данных • Удобная навигация и поиск/замена
Atelier и исходный код
CacheConfОбщий вид
CacheConf
• Навигация по проектам • Просмотр структуры файлов • Настройка фильтров отображения • Рабочие области
Работа с проектами
CacheConf
• Редактирование • CLS • MAC
• Подсветка синтаксиса • Показывание ошибок • Точки остановки • Структура файла • Контекстные подсказки
Редакторы кода
CacheConf
• Встроенные • Пользовательские • Из редакторов
Шаблоны
CacheConf
• Несколько серверов • Просмотр содержимого • Просмотр файлов с сервера • Импорт элементов/папок в проект • Удаление элементов с сервера
Сервера
CacheConf
• Подсветка • Указание сервера • Открываются при откладке • Поддерживают точки остановки • Только на чтение
Серверные документы
CacheConf
• Конфигурации – Запуск – Подключение • ЛокальныеПеременные • Точки останова – Простые – С условиями • Консоль • Режим исполнения
Отладка
CacheConf
AtelierВзгляд изнутри
CacheConf
• Архитектура современных IDE • DLTK что, зачем и почему? • Небольшое сравнение с Xtext • Архитектура • Atelier что внутри и какие сложности. • Парзера • Отладка • Рефакторинг
Atelier - взгляд изнутри
CacheConfАрхитектура Современных IDE
Project structure
model
Indexing and
Search
Content Assist and
Navigation
Code Editors
Launching and
Debugging
Refactoring Builder &Compiler
Validation &
Analyze
VCSTesting
CacheConf
• Workbench - стандартный расширяемый UI • Resource - управление файлами. • Editors - абстракции для реализация реакторов • Debug - инфраструктура отладки приложений. • Launching - Запуск приложений. • Preferences -настройки. • Team - системы контроля версий.
Eclipse как платформа
CacheConf
•Фреймворк на основе Eclipse для создания IDE для скриптовых языков. • Проект начат в 2006 году и с 2008 включается в Eclipse Simultaneous Releases. • Включает IDE для Ruby/Tcl/JavaScript. • На основе DLTK живут следующие проекты: PDT, LDT и другие.
DLTK - Dynamic Languages Toolkit
CacheConf
• Современный способ писать IDE для DSL и не только. • Много чего получается автоматом из коробки через задание грамматики в формате Xtext ( подмножество ANTLR). • Идеален для DSL в контекстно свободной форме. • Очень сложен в тонкой настройки и если отходить от модели рекомендуемой разработчиками Xtext. • Плохо масштабируется.
Xtext - eclipse.org/xtext
CacheConf
• Специфика Caché • Контекстно зависимые грамматики • Отсутствие исходных текстов для серверных документов. • Большое число включаемых языков. • DLTK предоставляет базовые абстракции которые все равно пришлось бы реализовывать. • Ttext работает с конкретикой.
DLTK - почему же?
CacheConf
• Структурная Модель + AST • Визарды и стандартный UI. • Индексирование и поиск. • Базовые классы редакторов. • Навигаторы по ресурсам модели. • Интерпретаторы и исполнение. • Отладка через DBGp (xdebug.org) протокол. • Рефакторинг и Форматирование.
DLTK возможности
CacheConfDLTK Структурная модель
.buildpathfile
EclipseProject
Interpreter
Container
Source folder
Model
Project
Fragment1
Folder1
FolderN
FragmentN
…
…
Source Module
Type
Method
Field
CacheConfDLTK Индексирование и поиск
Search Engine
Source Module1
Project
Source Parser
(indexing=true)
Index
Index Entry
Declaration
ReferenceSource ModuleN
…
Search for Declarations
Search for References
CacheConf
• Базовый класс редактора • Базовый класс SourceViewer •Outline/Quick Outline по структурной модели. •Модель Аннотаций + маркеры • Базовые операции редактирования. • Схлапывание кода и др.
DLTK редактора
CacheConf
• Парзера COS и др • Интеграция с DLTK • Структурный и индекс партера и др. • Визарды (проект, классы и др.) • Инфраструктура доступа к Caché по
RESTfull интерфейсу и управление серверами. • Отладка на основе DBGp протокола используя WebSocket транспорт.
Atelier - что внутри?
CacheConfAtelier парзера
Source Lexer
Parser 1
Parser N
… AST
• Lexer знает про все языки и строит нужные токены. • Запуск и использование разных парзеров для разных языков внутри COS позволяет пользовать уже существующие интеграции в Eclipse.
CacheConf
• ISourceElementParser на основе COS. • Строит структурную модель и индекс. • ISourceParser на основе COS. • строит совместимую AST. • Редакторы на основе DLTK. •Механизм индексации всех структур
DB в локальном индексе для навигации, поиска и контекстных подсказок. (в работе)
Atelier - интеграция с DLTK
CacheConf
• Управление серверами • RESTful вызовы к выбранному серверу • Получение информации • Получение UDL классов • Компиляция • и др. • Возможность доступа к инфраструктуре из дополнений к Atelier.
Atelier - сетевая инфраструктура
CacheConf
• На основе DLTK реализации DBGp протокола. • Транспорт через WebSocket соединение. • 3 режима отладки. • Class/Method, Routine/Label, Attach to
Process.
Atelier - отладка
CacheConf
• Точки остановки на строке в файле • Точки изменения значения переменной • В локальных и серверных UDL • Поддержка условий для остановки • Сложности с отображением
line -> methodName+offset и в обратную сторону. Использование COS парзеров.
Atelier - точки остановки
CacheConfAtelier - контекстные подсказки• Подсказки по настраиваемым шаблонам. • Подсказки по структуре файлов (в разработке) • Активное использование поиска • Алгоритмы вычисления типов
CacheConf
• Переименование идентификаторови всех их использовании локальных и на сервере. • Классы • Свойства •Методы • Другие типы локального и глобального рефакторинг
Atelier - рефакторинг
CacheConfAtelier - пример рефакторинга
CacheConf
CacheConf
Демонстрация
CacheConf
CacheConf
Вопросы???
CacheConf
CacheConf
Спасибо за внимание.Андрей Соболев -
Xored Software Inc.