Share
Embed
Transcript
19 slides
-
Автор ты кто Юрий Артамонов @jreznot ▪ Разрабатывал фреймворки и
библиотеки для Java на протяжении 9 лет ▪ Придумываю новые возможности IDE для ваших любимых JVM фреймворков в IntelliJ IDEA ▪ Беспристрастный член ПК конференций Joker/JPoint 2 -
План действий 1. Что за предмет такой Language Injections 2.
Как использовать в проекте 3. Как используется в JetBrains IDE 4. Как предоставить свои Injected References 5. Что нового? 3 -
Причины String Obsession ▪ Невозможно расширить компилятор Java ▪ Конфигурационные
файлы ▪ Мета-данные и аннотации ▪ Так проще! Лечим при помощи Language and Reference Injection! 5 -
Способы применения 1. Вручную 2. Комментарий // language=SQL 3. Аннотация
@Language(“SQL”) compile 'org.jetbrains:annotations:18.0.0' 4. Плагин! 8 -
Ключевые внутренности IDE ▪ Компоненты и сервисы ▪ Виртуальная файловая
система (VFS) ▪ Поддержка языков (PSI) ▪ Редактор кода ▪ Инспекции ▪ Индексы ▪ Фоновые процессы ▪ UI библиотека ▪ Точки расширения IntelliJ Platform IDEA CE (Java, Groovy, Kotlin) PHP Support Ruby Support IDEA Ultimate PHP Storm RubyMine 11 -
Как начать 12 1. Проверить/включить Plugin DevKit 2. Создать Gradle
проект с библиотекой IntelliJ Platform Plugin 3. Объявить и реализовать нужные точки расширения Рекомендуем Kotlin! -
Internal Mode Специальный режим работы IDE, в котором доступны опции
для разработчиков. ▪ Internal Actions ▪ View PSI / Dump UAST ▪ Dumb Mode Switch ▪ … Включить в VM Options: -Didea.is.internal=true 13 -
Ссылки в PSI дереве ▪ Позволяют установить связь между PsiElement
и его использованиями: usage ➜ declaration ▪ Могут предоставлять варианты для авто дополнения ▪ Можно добавить cсылки без необходимости расширять язык! См. PsiReferenceContributor PsiLanguageInjectionHost 14 -
Как что-то нужное найти Модуль java-indexing-api предоставляет методы поиска по
стандартным индексам: ▪ ReferencesSearch ▪ MethodReferenceSearch ▪ AnnotatedElementsSearch ▪ … Query<PsiReference> MethodReferencesSearch.search(psiMethod, scope, strict) Query<PsiReference> AnnotatedElementsSearch.searchPsiMethods(annotationClass, scope) 15 -
Куда копать дальше ▪ Исходный код IntelliJ IDEA CE: github.com/JetBrains/intellij-community
▪ Документация Plugin DevKit: jetbrains.org/intellij/sdk/docs/basics.html ▪ Forum: IntelliJ IDEA Open API and Plugin Development ▪ Slack: jetbrains-platform NEW! https://plugins.jetbrains.com/slack 16 -
Анонсы ▪ Скоро: установка плагинов без перезапуска ▪ Великое удаление
deprecated API и иконок в IntelliJ IDEA 2020.1 ▪ Пользователи будут получать уведомления об использовании deprecated API в плагине при его установке 18 -
Фреймворки и микросевисы! Новое в IntelliJ IDEA Ultimate 2019.3 1.
Microservice Frameworks: Micronaut, Quarkus, Helidon 2. OpenAPI Support 3. Endpoints View 4. URL Completion 5. Injectable URL References 19