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

Post on 28-Jun-2020

3 views 0 download

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

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.