SlideShare a Scribd company logo
1 of 13
Download to read offline
Command Line
Plugin
Участник: Кирилл Кононов
Руководитель: Дмитрий Булычев
for IntelliJ IDEA
Общие предпосылки
Использование командных строк бывает удобным.
Они входят в моду:
• Командная строка в FireFox
(https://hacks.mozilla.org/2012/08/new-firefox-
commandline-helps-you-develop-faster);
• GitHub Command Bar
(https://github.com/blog/1264-introducing-the-
command-bar);
Задача: разработать плагин для управления IntelliJ
IDEA с помощью командной строки.
Предыдущий этап
Осень 2012 года, учебная семестровая практика
студентов Академического университета:
Сергей Савенко Павел Чаднов
Предыдущий этап
• Организация плагина для IDEA с необходимыми
составляющими (в том числе, extension point)
• Прототип архитектуры, подразумевающей
позиционные аргументы
• Встроенный набор из четырёх команд
• Прототип возможности автодополнений
• Интерфейс в виде компонента pop-up
Новая версия
• Архитектура, основанная на именных
аргументах
• Эффективный инкрементальный парсинг
• Полноценная поддержка автодополнений
• Многоаспектная валидация
• История использованных команд
• Интерфейс в виде устойчивого компонента с
возможностью работы мышью
Именные аргументы
Короткие:
-var, -var value, -var "some value"
Длинные:
--variant, --variant=value,
--variant="some value"
• Более гибкий способ использования аргументов
по сравнению с позиционным
• Значение может содержать любые символы (в
том числе, пробелы), если используются кавычки
Инкрементальный парсинг
При изменении ввода, парсинг производится только
для аргументов на различной части строки.
Достигается большая эффективность парсинга.
Command –v1 –v2 value -v3 "some value"
Command –v1 –v2 value –v4 "another value"
Автодополнения
Предлагаются варианты для дополнения:
• Имени команды
• Имени варианта аргумента
• Значения аргумента (когда возможно)
Completion для значения может появиться из
стандартного «провайдера» значений типа или же
быть предусмотрен разработчиком команды.
Валидация
Определение корректности ввода. Включает
разбор случаев:
• Неверная команда, вариант или значение
аргумента
• Взаимоисключающие аргументы
• Отсутствие обязательного аргумента
• Отсутствие зависимого аргумента по
отношению к уже введенному
История команд
• Движение по истории команд: Ctrl + up / down
• Показ полного списка команд
История накапливается на протяжении времени
жизни всей IDE.
Интерфейс
Компонент командной строки имеет минимальный
размер и стратегии поведения при изменении
размеров и движении содержащих его компонент.
Плагин чувствует себя комфортно в окне IDE.
Планы на будущее
Продолжение проекта в формате учебной
семестровой практики CS-центра.
40% 60%
• Доработка
архитектурных
составляющих
• Улучшение
интерфейса
• Расширение
набора команд
Спасибо за внимание!

More Related Content

What's hot

Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
 
Php 5.5 - idea generator!
Php 5.5 - idea generator!Php 5.5 - idea generator!
Php 5.5 - idea generator!Vadim Kalin
 
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0beloslab
 
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеДенис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеYandex
 
Форум на полном БЭМ-стеке — Николай Ильченко, Яндекс
Форум на полном БЭМ-стеке — Николай Ильченко, ЯндексФорум на полном БЭМ-стеке — Николай Ильченко, Яндекс
Форум на полном БЭМ-стеке — Николай Ильченко, ЯндексYandex
 
Как за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформуКак за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформуAndrew Gubskiy
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовCOMAQA.BY
 
Automated tests ci
Automated tests ci Automated tests ci
Automated tests ci COMAQA.BY
 
Интеграция TeamCity и сервера символов | Алексей Соловьев
Интеграция TeamCity и сервера символов | Алексей СоловьевИнтеграция TeamCity и сервера символов | Алексей Соловьев
Интеграция TeamCity и сервера символов | Алексей СоловьевPositive Hack Days
 
1. RAD Studio Tokyo What's new Введение (К.Раннев)
1. RAD Studio Tokyo What's new Введение (К.Раннев)1. RAD Studio Tokyo What's new Введение (К.Раннев)
1. RAD Studio Tokyo What's new Введение (К.Раннев)sandy97
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQubePositive Hack Days
 
Эффективная работа с Adobe Creative Cloud.
Эффективная работа с Adobe Creative Cloud.Эффективная работа с Adobe Creative Cloud.
Эффективная работа с Adobe Creative Cloud.Telpis Georgiy design studio
 
Автоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решениюАвтоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решениюSQALab
 
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Storesandy97
 
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)Ontico
 
«Advanced {product_name} configuring», Алексей Макеев, Mail.Ru Group
«Advanced {product_name} configuring», Алексей Макеев, Mail.Ru Group«Advanced {product_name} configuring», Алексей Макеев, Mail.Ru Group
«Advanced {product_name} configuring», Алексей Макеев, Mail.Ru GroupMail.ru Group
 

What's hot (19)

Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
 
Php 5.5 - idea generator!
Php 5.5 - idea generator!Php 5.5 - idea generator!
Php 5.5 - idea generator!
 
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0
Konstantin Slisenko - OSGi, Equinox, Eclipse plug-in development, v 2.0
 
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеДенис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в Яндексе
 
Форум на полном БЭМ-стеке — Николай Ильченко, Яндекс
Форум на полном БЭМ-стеке — Николай Ильченко, ЯндексФорум на полном БЭМ-стеке — Николай Ильченко, Яндекс
Форум на полном БЭМ-стеке — Николай Ильченко, Яндекс
 
Как за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформуКак за $5 и несколько вечеров сделать интегрированную новостную платформу
Как за $5 и несколько вечеров сделать интегрированную новостную платформу
 
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
 
Automated tests ci
Automated tests ci Automated tests ci
Automated tests ci
 
Интеграция TeamCity и сервера символов | Алексей Соловьев
Интеграция TeamCity и сервера символов | Алексей СоловьевИнтеграция TeamCity и сервера символов | Алексей Соловьев
Интеграция TeamCity и сервера символов | Алексей Соловьев
 
1. RAD Studio Tokyo What's new Введение (К.Раннев)
1. RAD Studio Tokyo What's new Введение (К.Раннев)1. RAD Studio Tokyo What's new Введение (К.Раннев)
1. RAD Studio Tokyo What's new Введение (К.Раннев)
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQube
 
Эффективная работа с Adobe Creative Cloud.
Эффективная работа с Adobe Creative Cloud.Эффективная работа с Adobe Creative Cloud.
Эффективная работа с Adobe Creative Cloud.
 
Автоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решениюАвтоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решению
 
Php55
Php55Php55
Php55
 
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
 
Задачи российского офиса
Задачи российского офисаЗадачи российского офиса
Задачи российского офиса
 
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
 
Andrey Dyakov, Lead Engineer, Sperasoft
Andrey Dyakov, Lead Engineer, SperasoftAndrey Dyakov, Lead Engineer, Sperasoft
Andrey Dyakov, Lead Engineer, Sperasoft
 
«Advanced {product_name} configuring», Алексей Макеев, Mail.Ru Group
«Advanced {product_name} configuring», Алексей Макеев, Mail.Ru Group«Advanced {product_name} configuring», Алексей Макеев, Mail.Ru Group
«Advanced {product_name} configuring», Алексей Макеев, Mail.Ru Group
 

Similar to Command Line PLugin for IntelliJ IDEA

2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел КрынецкийJSC “Arcadia Inc”
 
Внедрение аспектов в PHP с помощью библиотеки GO! AOP
Внедрение аспектов в PHP с помощью библиотеки GO! AOPВнедрение аспектов в PHP с помощью библиотеки GO! AOP
Внедрение аспектов в PHP с помощью библиотеки GO! AOPAlexander Lisachenko
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кодаSergii Shmarkatiuk
 
Использование Symfony
Использование SymfonyИспользование Symfony
Использование SymfonyMedia Gorod
 
внедрении Wpf в сложных системах
внедрении Wpf в сложных системахвнедрении Wpf в сложных системах
внедрении Wpf в сложных системахWhiteMbIXA
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковCodeFest
 
Создаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияСоздаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияOvadiah Myrgorod
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Bafpug
BafpugBafpug
BafpugValery
 
Лекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-frameworkЛекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-frameworkЯковенко Кирилл
 
Workflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеWorkflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеDenis Chistyakov
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Vladimir Bakhov
 
основы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программированиеосновы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программированиеYakubovichDA
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word pressvovasik
 
Caché github continuous intergration
Caché github continuous intergrationCaché github continuous intergration
Caché github continuous intergrationInterSystems
 

Similar to Command Line PLugin for IntelliJ IDEA (20)

2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
 
Внедрение аспектов в PHP с помощью библиотеки GO! AOP
Внедрение аспектов в PHP с помощью библиотеки GO! AOPВнедрение аспектов в PHP с помощью библиотеки GO! AOP
Внедрение аспектов в PHP с помощью библиотеки GO! AOP
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кода
 
Java one presentation
Java one presentationJava one presentation
Java one presentation
 
Java 2 - Java Intro
Java 2 - Java IntroJava 2 - Java Intro
Java 2 - Java Intro
 
Использование Symfony
Использование SymfonyИспользование Symfony
Использование Symfony
 
2IDE~1.PPT
2IDE~1.PPT2IDE~1.PPT
2IDE~1.PPT
 
внедрении Wpf в сложных системах
внедрении Wpf в сложных системахвнедрении Wpf в сложных системах
внедрении Wpf в сложных системах
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
Создаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровожденияСоздаем Drupal дистрибутив: от идеи до сопровождения
Создаем Drupal дистрибутив: от идеи до сопровождения
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Bafpug
BafpugBafpug
Bafpug
 
Лекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-frameworkЛекция #6. Введение в Django web-framework
Лекция #6. Введение в Django web-framework
 
Workflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеWorkflow: работа над проектом в Яндексе
Workflow: работа над проектом в Яндексе
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)
 
основы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программированиеосновы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программирование
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word press
 
Genome
GenomeGenome
Genome
 
Caché github continuous intergration
Caché github continuous intergrationCaché github continuous intergration
Caché github continuous intergration
 

Command Line PLugin for IntelliJ IDEA

  • 1. Command Line Plugin Участник: Кирилл Кононов Руководитель: Дмитрий Булычев for IntelliJ IDEA
  • 2. Общие предпосылки Использование командных строк бывает удобным. Они входят в моду: • Командная строка в FireFox (https://hacks.mozilla.org/2012/08/new-firefox- commandline-helps-you-develop-faster); • GitHub Command Bar (https://github.com/blog/1264-introducing-the- command-bar); Задача: разработать плагин для управления IntelliJ IDEA с помощью командной строки.
  • 3. Предыдущий этап Осень 2012 года, учебная семестровая практика студентов Академического университета: Сергей Савенко Павел Чаднов
  • 4. Предыдущий этап • Организация плагина для IDEA с необходимыми составляющими (в том числе, extension point) • Прототип архитектуры, подразумевающей позиционные аргументы • Встроенный набор из четырёх команд • Прототип возможности автодополнений • Интерфейс в виде компонента pop-up
  • 5. Новая версия • Архитектура, основанная на именных аргументах • Эффективный инкрементальный парсинг • Полноценная поддержка автодополнений • Многоаспектная валидация • История использованных команд • Интерфейс в виде устойчивого компонента с возможностью работы мышью
  • 6. Именные аргументы Короткие: -var, -var value, -var "some value" Длинные: --variant, --variant=value, --variant="some value" • Более гибкий способ использования аргументов по сравнению с позиционным • Значение может содержать любые символы (в том числе, пробелы), если используются кавычки
  • 7. Инкрементальный парсинг При изменении ввода, парсинг производится только для аргументов на различной части строки. Достигается большая эффективность парсинга. Command –v1 –v2 value -v3 "some value" Command –v1 –v2 value –v4 "another value"
  • 8. Автодополнения Предлагаются варианты для дополнения: • Имени команды • Имени варианта аргумента • Значения аргумента (когда возможно) Completion для значения может появиться из стандартного «провайдера» значений типа или же быть предусмотрен разработчиком команды.
  • 9. Валидация Определение корректности ввода. Включает разбор случаев: • Неверная команда, вариант или значение аргумента • Взаимоисключающие аргументы • Отсутствие обязательного аргумента • Отсутствие зависимого аргумента по отношению к уже введенному
  • 10. История команд • Движение по истории команд: Ctrl + up / down • Показ полного списка команд История накапливается на протяжении времени жизни всей IDE.
  • 11. Интерфейс Компонент командной строки имеет минимальный размер и стратегии поведения при изменении размеров и движении содержащих его компонент. Плагин чувствует себя комфортно в окне IDE.
  • 12. Планы на будущее Продолжение проекта в формате учебной семестровой практики CS-центра. 40% 60% • Доработка архитектурных составляющих • Улучшение интерфейса • Расширение набора команд