1 / 29

JetBrains и .NET – IDEA Reloaded

SPb JUG, 26.03.2005. JetBrains и .NET – IDEA Reloaded. Дмитрий Ломов Senior Software Developer dmitry.lomov@jetbrains.com http://www.jetbrains.com. План. SPb JUG, 26.03.2005. Что мы делаем? Наши продукты для .NET разработчиков Как мы делаем? Наша «методология» разработки

Download Presentation

JetBrains и .NET – IDEA Reloaded

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

  5. SPb JUG, 26.03.2005 Highlight Usages Smart completion Refactorings Quick Fixes

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

  7. SPb JUG, 26.03.2005

  8. Скоро SPb JUG, 26.03.2005 • JetBrains .NET Profiler http://www.jetbrains.net/netprofiler • в 1.0 – только performance profiling • замедление – в 2-5 раз (ANTS – 10-20раз) • удобный интерфейс: Profile with Pleasure! • Следите за рекламой!

  9. Как мы делаем SPb JUG, 26.03.2005

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

  11. EAP SPb JUG, 26.03.2005 • “Closed source, open mind” • Регулярно обновляемые версии • Не кривые, поскольку используются внутри фирмы • Форум – прямой контакт с разработчиками • Bug Tracker – прямой контакт с разработчиками • http://www.jetbrains.net/ • Добро пожаловать!

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

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

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

  15. Performance Tests SPb JUG, 26.03.2005

  16. SPb JUG, 26.03.2005

  17. А что внутри? SPb JUG, 26.03.2005

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

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

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

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

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

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

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

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

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

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

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

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

More Related