JetBrains и.NET – IDEA Reloaded Дмитрий Ломов Senior Software Developer dmitry.lomov@jetbrains.com SPb JUG, 26.03.2005.

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



Advertisements
Похожие презентации
Рефакторинг Забота о коде Андрей Скляревский.NET Developer, Murano Software
Advertisements

Инструменты VS 2010 для работы с XML языком XML редактор. XSLT отладчик XSLT Profiler, инструмент позволяющий разработчикам измерять, оценивать и решать.
SQL 2012 И ГИБКИЕ МЕТОДЫ КОМАНДНОЙ РАЗРАБОТКИ C TFS Добро пожаловать в команду! Alexander Yakovlev
Непрерывная интеграция для PHP Александр Симанович.
Вехи проекта Microsoft Solution Framework. Содержание Утверждение целей и границ Утверждение плана проекта Завершение разработки/Первое использование.
8/13/2012dotSITE - XP and MSF development in.NET1 Проектирование и создание приложений на базе Visual Studio.NET Andrew Filev Team leader dotSITE Ltd.Co.
Автоматическая генерация кода программ с явным выделением состояний Канжелев С.Ю. магистрант СПбГУ ИТМО Шалыто А.А. доктор технических наук профессор СПбГУ.
Team System - фреймворк для автоматизации тестирования от Microsoft Футорняк Елена Apriorit Сообщество Тестировщиков Днепропетровска 29/09/2011.
ДонНУ, кафедра КТ, проф.В.К.Толстых WCF-службы Создание и тестирование.dll-библиотеки WCF-служб Из цикла лекций «Internet-технологии разработки приложений»
Редактор знаний Knowledge.NET Санкт-Петербургский Государственный Университет Докладчик Черепанов Дмитрий Научный руководитель Сафонов Владимир Олегович,
Тренинг «Разработка веб-приложений на ASP.NET» Занятие 1 Знакомство с ASP.NET Гайдар Магдануров
Программные средства для управления жизненным циклом приложений (Application lifecycle management -ALM) 16 октября 2009 г. Дмитрий Стрельников, Руководитель.
1 Умение мыслить объектно (проектирование архитектуры) Культура кодирования Знание языка и технологий Знание языка и технологий Понимание процесса Задача.
Статический анализ кода (на примере DDD-фреймворка) Алексеев Алексей Николай Гребнев
Software engineering Дмитриев Андрей Владиславович ©
Симпозиум 2008 Сергей Шутов, ДИМАС Борис Егоров, Интерсистемс Практика использования Zen и Прототип-6.
Язык программирования C# Дмитрий Сошников
Ресурсы WPF Два типа ресурсов WPF: объектные ресурсы (object resource) – определенный.NET-объект, который можно использовать многократно; ресурсы сборки.
Microsoft.NET Первая лекция. COM Доступ к компонентам только через интерфейсы Назначение уникальных идентификаторов компонентам и интерфейсам Регистрация.
Java Puzzlers Автор: Фофанова Мария Руководитель: Симончик Сергей.
Транксрипт:

JetBrains и.NET – IDEA Reloaded Дмитрий Ломов Senior Software Developer SPb JUG,

Что мы делаем? Наши продукты для.NET разработчиков Как мы делаем? Наша «методология» разработки А что внутри? Архитектура, OpenAPI, новые языки, плагины План

SPb JUG, Что мы делаем

SPb JUG, JetBrains ReSharper Add-On для Microsoft Visual Studio 2003 Основная функциональность IntelliJ IDEA: рефакторинги, подсветка и исправление ошибок, live templates, productivity features… - для.NET Framework 1.1 и только для C#. Большой успех Всего $149! Настоящее

SPb JUG, Highlight UsagesSmart completion Quick Fixes Refactorings

SPb JUG, Скоро ReSharper 2.0 Add-In для VS 2003: VB, ASP, кросс-языковая функциональность: рефакторинги и т.д. Add-In для VS 2005:.NET Framework 2.0 (C#, VB, ASP) Своя IDE: отладчик, удобная интеграция с VCS, … OpenAPI: вплоть до поддержки других языков (например F#)

SPb JUG,

Скоро JetBrains.NET Profiler в 1.0 – только performance profiling замедление – в 2-5 раз (ANTS – раз) удобный интерфейс: Profile with Pleasure! Следите за рекламой!

SPb JUG, Как мы делаем

SPb JUG, Цикл разработки 1.Начало: планирование, старт разработки, развал всего 2.Внутренний релиз – eating own dogs food 3.Early Access Program (EAP) public build раз в неделю или чаще 4.Стабилизация (исправляются только stopship SCRs) 5.Релиз (0 stopship SCRs) 6.Поддержка (версии x.y.k – шаги 3-5)

SPb JUG, EAP Closed source, open mind Регулярно обновляемые версии Не кривые, поскольку используются внутри фирмы Форум – прямой контакт с разработчиками Bug Tracker – прямой контакт с разработчиками Добро пожаловать!

SPb JUG, Процесс разработки(1) Команда – 7 человек Планирование – Bug Tracker Ежедневный stand-up meeting Минимум формальных правил

SPb JUG, Процесс разработки(2) Unit-тестирование Тесты пишут разработчики Непрерывная интеграция После каждого commitа строится полная версия программы, запускаются все тесты Тестирование производительности Нет отдела QA

SPb JUG, Непрерывная интеграция

SPb JUG, Performance Tests

SPb JUG,

А что внутри?

SPb JUG, Основные принципы Компонентная модель Использование мета-данных Генерация кода

SPb JUG, Компонентная модель(1) EditorManager IEditor EditFile(IProjectFile) static EditorManager Instance Component(Config.All) EditorManagerImpl IEditor EditFile(IProjectFile) Component(Config.STANDALONE) VSEditorManagerImpl IEditor EditFile(IProjectFile) Component(Config.VS2003) Editor.dll

SPb JUG, Компонентная модель(2) public static void Main() { new Shell(Config.STANDALONE, Assembly.xml);... } Shell object GetComponent(Type) static EditorManager Instance { get { return (EditorManager) Shell.ActiveShell.GetCoponent(typeof(EditorManager)); }... IEditor editor = EditorManager.Instance.EditFile(projectItem); editor.CaretModel.MoveTo(classDeclaration.StartOffset);... EditorManager.dll

SPb JUG, Компонентная модель(3) Компоненты разных уровней (Shell, Solution, Project) Автоматическая сериализация (XML) Возможность загрузки/выгрузки => Plugins Обширные возможности переиспользования Легко настраивается на разные «окружения» один и тот же клиентский код в IDE, VS2003, VS2005 тестовые реализации компонент ( Config.TESTS )

SPb JUG, Использование мета-данных Мета-данные - это удобно! При загрузке assembly автоматически добавляются Компоненты Окна (Tool Windows) Команды (Actions) Поддержка языков И проч.

SPb JUG, Команды (Actions) Action ShortcutMenu item IActionHandler bool Update(IDataContext) void Execute(IDataContext) 1:n IDataContext object GetData(DataConstant) DataConstant : FILE, EDITOR, PROJECT... Как узнать, активна ли команда: Контролы выдают контексты (реализуют IDataProvider ) Контекст собирается от сфокусированного контрола вверх У обработчиков вызывается Update

SPb JUG, Команды (2) [ActionHandler(OpenFile)] class OpenFileHandler : IActionHandler { public bool Update(IDataContext context){ return context.GetData(DataConst.FILE) != null; } public void Execute(IDataContext context){ EditorManager.Instance.EditFile( (IProjectFile) context.GetData(DataConst.FILE) ); }

SPb JUG, Архитектура ProjectModelDocument Синтаксическое деревоПонятия CLR (межязыковые) Program Structure Interface (PSI) Ядро РефакторингиРедактор Подсветка ошибок (демон) …

SPb JUG, Как добавить новый язык 1.Лексический анализатор (lexer) подсветка в редакторе 2.Синтаксический разбор, дерево Ctrl+W, keyword completion, подсветка синтаксических ошибок 3.Разрешение ссылок (resolve) поиск использований, переход на декларацию, переименование 4.Отображение в понятия CLR то же, что и в п.3 из других языков 5.Языковые вставки в другую функциональность (подсветка ошибок, рефакторинги и т.д.)

SPb JUG, Генерация PSI ifStatement : IF expression statement (ELSE statement )? ; IIfStatement IExpression Condition() IStatement ThenBranch() IStatement ElseBranch() void SetCondition(IExpression) void SetThenBranch(IStatement) void SetElseBranch(IStatement) IfStatementStub IExpression Condition() IStatement ThenBranch() IStatement ElseBranch() void SetCondition(IExpression) void SetThenBranch(IStatement) void SetElseBranch(IStatement) CSharpParser... IIfStatement ParseIfStatement()...

SPb JUG, Генерация кода Меньше рутинной работы Легко менять дизайн Генерируемый код расширяется наследованием будет лучше, когда появятся partial классы Используется не только для PSI: Типы подсвечиваемых ошибок Локализуемые строчки (resource bundle)

SPb JUG, JetBrains. Develop with Pleasure. JetCerveau. Développez-vous avec le Plaisir. Струйные Мозги. Проявлять под кайфом. Спасибо! JetGehizn. Entwicklung mit Vergn ü gen.