CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier...

38
CacheConf CacheConf Atelier – новая кросс- платформенная среда разработки. Взгляд изнутри Андрей Соболев - Xored Software Inc.

Transcript of CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier...

Page 1: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

CacheConf

Atelier – новая кросс-платформенная среда разработки. Взгляд изнутриАндрей Соболев -

Xored Software Inc.

Page 2: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Возможности современных IDE • Atelier для пользователя• Обзор основных функций

• Atelier изнутри • DLTK и зачем он нужен • Сложности Caché

• Демонстрация • Вопросы?

Структура

Page 3: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

ОбзорВозможности современных IDE

Page 4: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Подсветка синтаксиса + семантическая подсветка • Удобные функции редактирования • Контекстные подсказки/авто дополнения/документация • Навигация по коду • Валидация/ошибки/исправления •Форматирование

Функции современных IDEОсновные функции

Page 5: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Глобальный поиск и замена • Рефакторинг • Иерархии наследования • Иерархии вызовов методов • Отладка • Инфраструктура для тестирования • Глубокий анализ кода

Функции современных IDEРасширенные функции

Page 6: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

AtelierОбзор основных функций

Page 7: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Открытая платформа с богатой экосистемой • Системы контроля версий • Подсистема отладки • Рефакторинг/Анализ кода •Windows, Mac и Linux •Множество сторонних дополнений •Фреймворки для UI тестирования

Atelier и Eclipse

Page 8: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Код на уровне клиента UDL • Пользовательское форматирование • Валидация и анализ кода

• Код в Проектах • Публикация на сервер по изменению • Индексация серверных данных • Удобная навигация и поиск/замена

Atelier и исходный код

Page 9: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConfОбщий вид

Page 10: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Навигация по проектам • Просмотр структуры файлов • Настройка фильтров отображения • Рабочие области

Работа с проектами

Page 11: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Редактирование • CLS • MAC

• Подсветка синтаксиса • Показывание ошибок • Точки остановки • Структура файла • Контекстные подсказки

Редакторы кода

Page 12: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Встроенные • Пользовательские • Из редакторов

Шаблоны

Page 13: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Несколько серверов • Просмотр содержимого • Просмотр файлов с сервера • Импорт элементов/папок в проект • Удаление элементов с сервера

Сервера

Page 14: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Подсветка • Указание сервера • Открываются при откладке • Поддерживают точки остановки • Только на чтение

Серверные документы

Page 15: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Конфигурации – Запуск – Подключение • ЛокальныеПеременные • Точки останова – Простые – С условиями • Консоль • Режим исполнения

Отладка

Page 16: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

AtelierВзгляд изнутри

Page 17: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Архитектура современных IDE • DLTK что, зачем и почему? • Небольшое сравнение с Xtext • Архитектура • Atelier что внутри и какие сложности. • Парзера • Отладка • Рефакторинг

Atelier - взгляд изнутри

Page 18: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConfАрхитектура Современных IDE

Project structure

model

Indexing and

Search

Content Assist and

Navigation

Code Editors

Launching and

Debugging

Refactoring Builder &Compiler

Validation &

Analyze

VCSTesting

Page 19: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Workbench - стандартный расширяемый UI • Resource - управление файлами. • Editors - абстракции для реализация реакторов • Debug - инфраструктура отладки приложений. • Launching - Запуск приложений. • Preferences -настройки. • Team - системы контроля версий.

Eclipse как платформа

Page 20: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

•Фреймворк на основе Eclipse для создания IDE для скриптовых языков. • Проект начат в 2006 году и с 2008 включается в Eclipse Simultaneous Releases. • Включает IDE для Ruby/Tcl/JavaScript. • На основе DLTK живут следующие проекты: PDT, LDT и другие.

DLTK - Dynamic Languages Toolkit

Page 21: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Современный способ писать IDE для DSL и не только. • Много чего получается автоматом из коробки через задание грамматики в формате Xtext ( подмножество ANTLR). • Идеален для DSL в контекстно свободной форме. • Очень сложен в тонкой настройки и если отходить от модели рекомендуемой разработчиками Xtext. • Плохо масштабируется.

Xtext - eclipse.org/xtext

Page 22: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Специфика Caché • Контекстно зависимые грамматики • Отсутствие исходных текстов для серверных документов. • Большое число включаемых языков. • DLTK предоставляет базовые абстракции которые все равно пришлось бы реализовывать. • Ttext работает с конкретикой.

DLTK - почему же?

Page 23: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Структурная Модель + AST • Визарды и стандартный UI. • Индексирование и поиск. • Базовые классы редакторов. • Навигаторы по ресурсам модели. • Интерпретаторы и исполнение. • Отладка через DBGp (xdebug.org) протокол. • Рефакторинг и Форматирование.

DLTK возможности

Page 24: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConfDLTK Структурная модель

.buildpathfile

EclipseProject

Interpreter

Container

Source folder

Model

Project

Fragment1

Folder1

FolderN

FragmentN

Source Module

Type

Method

Field

Page 25: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConfDLTK Индексирование и поиск

Search Engine

Source Module1

Project

Source Parser

(indexing=true)

Index

Index Entry

Declaration

ReferenceSource ModuleN

Search for Declarations

Search for References

Page 26: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Базовый класс редактора • Базовый класс SourceViewer •Outline/Quick Outline по структурной модели. •Модель Аннотаций + маркеры • Базовые операции редактирования. • Схлапывание кода и др.

DLTK редактора

Page 27: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Парзера COS и др • Интеграция с DLTK • Структурный и индекс партера и др. • Визарды (проект, классы и др.) • Инфраструктура доступа к Caché по

RESTfull интерфейсу и управление серверами. • Отладка на основе DBGp протокола используя WebSocket транспорт.

Atelier - что внутри?

Page 28: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConfAtelier парзера

Source Lexer

Parser 1

Parser N

… AST

• Lexer знает про все языки и строит нужные токены. • Запуск и использование разных парзеров для разных языков внутри COS позволяет пользовать уже существующие интеграции в Eclipse.

Page 29: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• ISourceElementParser на основе COS. • Строит структурную модель и индекс. • ISourceParser на основе COS. • строит совместимую AST. • Редакторы на основе DLTK. •Механизм индексации всех структур

DB в локальном индексе для навигации, поиска и контекстных подсказок. (в работе)

Atelier - интеграция с DLTK

Page 30: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Управление серверами • RESTful вызовы к выбранному серверу • Получение информации • Получение UDL классов • Компиляция • и др. • Возможность доступа к инфраструктуре из дополнений к Atelier.

Atelier - сетевая инфраструктура

Page 31: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• На основе DLTK реализации DBGp протокола. • Транспорт через WebSocket соединение. • 3 режима отладки. • Class/Method, Routine/Label, Attach to

Process.

Atelier - отладка

Page 32: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Точки остановки на строке в файле • Точки изменения значения переменной • В локальных и серверных UDL • Поддержка условий для остановки • Сложности с отображением

line -> methodName+offset и в обратную сторону. Использование COS парзеров.

Atelier - точки остановки

Page 33: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConfAtelier - контекстные подсказки• Подсказки по настраиваемым шаблонам. • Подсказки по структуре файлов (в разработке) • Активное использование поиска • Алгоритмы вычисления типов

Page 34: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

• Переименование идентификаторови всех их использовании локальных и на сервере. • Классы • Свойства •Методы • Другие типы локального и глобального рефакторинг

Atelier - рефакторинг

Page 35: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConfAtelier - пример рефакторинга

Page 36: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

CacheConf

Демонстрация

Page 37: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

CacheConf

Вопросы???

Page 38: CacheConf - InterSystemsCacheConf • Возможности современных IDE • Atelier для пользователя • Обзор основных функций •

CacheConf

CacheConf

Спасибо за внимание.Андрей Соболев -

Xored Software Inc.