Русский
Русский
English
Статистика
Реклама

Intellij idea plugin

Создаем plugin для IDEA для мониторинга транзакций в Spring

20.04.2021 10:21:38 | Автор: admin

Disclaimer: я не являюсь сотрудником JetBrains (а жаль), поэтому код может являться не оптимальным и служит только для примера и исследовательских целей.

Введение

Часто во время работы со Spring непонятно, правильно ли работает аннотация @Transaction:

  • в правильном ли месте мы ее поставили

  • правильно ли объявился interceptor

  • и т.д.

Самым простым способом для меня было остановиться в debug в IDEA в необходимом методе и исследовать, что возвращает

TransactionSynchronizationManager.isActualTransactionActive();

Но "я же программист" и захотелось это дело хоть как-то автоматизировать, заодно поизучать возможности написания plugin для IDEA.

Хочется иметь семафор, который визуально показывает, активна ли транзакция или нет, а также иметь возможность сделать срез основных свойств для анализа в будущем.

Примерно вот что получилось:

Подробней про транзакции можно прочитать здесь.

С чего начать создания plugin?

Про настройку проекта для создание plugin можно прочитать здесь.

Повторюсь, что главными отправными точками будут:

Реализация

Исходный код получившегося решения размещен здесь.

Создание action

Прочитать про action можно здесь. Под action, в основном, понимается кнопка или элемент меню.

Сначала определим новый action. У action есть два метода update и actionPerformed.

  • update - вызывается idea несколько раз в секунду для того, чтобы установить корректное состояние (включен/не включен, виден/не виден)

  • actionPerformed - вызывается idea при выполнении действия (нажатия на кнопку).

public class PopupDialogAction extends AnAction {  @Override  public void update(AnActionEvent e) {    // Using the event, evaluate the context, and enable or disable the action.  }  @Override  public void actionPerformed(@NotNull AnActionEvent e) {    // Using the event, implement an action. For example, create and show a dialog.  }}

Для того, чтобы зарегистрировать новый action, требуется прописать в plugin.xml:

<actions>  <action id="TransactionStatusAction"          class="com.github.pyltsin.sniffer.debugger.TransactionStatusAction"          icon="SnifferIcons.RUNNING"          text="Current Transaction Status">    <add-to-group group-id="XDebugger.ToolWindow.TopToolbar" anchor="last"/>  </action></actions>

После этого должна была появиться новая кнопка на панели инструментов в debug-окне

Вычисление значений в debug

IDEA позволяет нам вычислять выражения при debug и взаимодействовать с памятью

И не только

Информация взята из twitter Тагира Валеева

В Evaluate даже встроен свой мини-интерпретатор Java, который позволяет выполнять прикольные вещи, например, такие:

Картинка из поста Тагира Валеева (http://personeltest.ru/aways/twitter.com/tagir_valeev/status/1360512527218728962)Картинка из поста Тагира Валеева (http://personeltest.ru/aways/twitter.com/tagir_valeev/status/1360512527218728962)

Поэтому, используя API IDEA, мы легко сможем узнать, когда транзакция активна, выполнив:

const val TRANSACTION_ACTIVE: String =    "org.springframework.transaction.support.TransactionSynchronizationManager"+  ".actualTransactionActive.get()==Boolean.TRUE"

Для начала сделаем так, чтобы наше действие было недоступно, если мы не находимся в режиме debug. Для этого получим XDebugSession и сравним с null

override fun update(e: AnActionEvent) {  val presentation = e.presentation  val currentSession: XDebugSession? = getCurrentSession(e)  if (currentSession == null) {    setDisabled(presentation)    return  }}private fun getCurrentSession(e: AnActionEvent): XDebugSession? {  val project = e.project  return if (project == null) null else   XDebuggerManager.getInstance(project).currentSession}

Многие вещи в idea реализованы через статические методы и паттерн singleton (хотя это уже почти считается антипаттерном - это очень удобно, что мы можем получить требуемые значения из любого места через статические методы, например, XDebuggerManager.getInstance)

Евгений Борисов не одобряет singleton как pattern, когда есть SpringЕвгений Борисов не одобряет singleton как pattern, когда есть Spring

Теперь мы хотим получить значения из контекста Spring из текущей сессии Java. Для этого можно воспользоваться следующим методом:

public abstract class XDebuggerEvaluator {  public abstract void evaluate(@NotNull String expression,                                 @NotNull XEvaluationCallback callback,                                 @Nullable XSourcePosition expressionPosition);}

Например, так

val currentSourcePosition: XSourcePosition? = currentSession.currentStackFrame?.sourcePositioncurrentSession.debugProcess.evaluator?.evaluate(  TRANSACTION_ACTIVE, object : XDebuggerEvaluator.XEvaluationCallback {    override fun errorOccurred(errorMessage: String) {      TODO("Not yet implemented")    }    override fun evaluated(result: XValue) {      TODO("Not yet implemented")    }  },  currentSourcePosition)

В XValue теперь хранится вычисленное значение. Чтобы посмотреть его, можно выполнить:

(result as JavaValue).descriptor.value

Он возвращает объект класса - com.sun.jdi.Value

Часть JavaDoc для com.sun.jdi.Value

The mirror for a value in the target VM. This interface is the root of a value hierarchy encompassing primitive values and object values.

Мы научились вычислять значения в debug с использованием API IDEA.

Рабочая панель (Tool Window)

Теперь попробуем их вывести в рабочую панель (Tool Window). Как всегда начинаем с документации и примера.

Объявляем в plugin.xml новое окно

<toolWindow id="TransactionView" secondary="true" icon="AllIcons.General.Modified" anchor="right"factoryClass="com.github.pyltsin.sniffer.ui.MyToolWindowFactory"/>
public class MyToolWindowFactory implements ToolWindowFactory {  public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) {    MyToolWindow myToolWindow = new MyToolWindow(toolWindow, project);    ContentFactory contentFactory = ContentFactory.SERVICE.getInstance();    Content content = contentFactory.createContent(myToolWindow.getContent(), "", false);    final ContentManager contentManager = toolWindow.getContentManager();    contentManager.addContent(content);  }}

Само окно можно нарисовать во встроенном редакторе

IDEA сама сгенерирует для нас заготовку класса:

А дальше, вспоминая старый добрый Swing, описываем логику и добавляем необходимые Listener.

Получившееся окно инструментов (Tool Windows)Получившееся окно инструментов (Tool Windows)

Способы передачи данных

Вернемся к нашему action. При нажатии на кнопку вызывается метод actionPerformed.

Как из этого метода достучаться до нашего окна?

Самый простой способ - снова воспользоваться статическим методом:

val toolWindow: ToolWindow? =ToolWindowManager.getInstance(project).getToolWindow("TransactionView")

И передать туда требуемые значения.

IDEA предоставляет еще один способ - Message Bus (детальное описание лучше смотреть в документации). Один из вариантов использования следующий:

Объявить интерфейс:

public interface ChangeActionNotifier {    Topic<ChangeActionNotifier> CHANGE_ACTION_TOPIC = Topic.create("custom name", ChangeActionNotifier.class)    void beforeAction(Context context);    void afterAction(Context context);}

В месте, где принимаем сообщения:

bus.connect().subscribe(ActionTopics.CHANGE_ACTION_TOPIC, new ChangeActionNotifier() {        @Override        public void beforeAction(Context context) {            // Process 'before action' event.        }        @Override        public void afterAction(Context context) {            // Process 'after action' event.        }});

В месте, где отправляем сообщения:

ChangeActionNotifier publisher = myBus.syncPublisher(  ActionTopics.CHANGE_ACTION_TOPIC);publisher.beforeAction(context);

В любом случае необходимо быть аккуратным с многопоточностью и не выполнять долгие операции на UI Thread (подробности).

Осталось собрать все вместе и протестировать.

Исходный код получившегося решения размещен здесь.

Краткий "как бы" вывод

IDEA очень гибкий и удобный инструмент для разработки, который можно быстро расширить требуемыми функциями. IDEA содержит массу интересного внутри себя, тем более ее код доступен всем.

Ссылки

Подробнее..

JPA Buddy Умный помощник половина работы

17.03.2021 14:12:14 | Автор: admin

От переводчика: это статья моего коллеги @aleksey-stukalov, которую мы опубликовали в блоге JPA Buddy пару месяцев назад. С тех пор мы выпустили JPA Buddy 2.0, но все сказанное в этой статье актуальности не потеряло.

Ну что ж, Hello World... После почти года разработки наконец-то вышла первая версия JPA Buddy! Это инструмент, который должен стать вашим верным помощником по написанию кода для проектов с JPA и всем, что с этим связано: Hibernate, Spring Data, Liquibase и другим ПО из типичного стека разработки.

Чем он вам поможет? Если кратко, JPA Buddy упростит работу с JPA и тем самым сэкономит ваше время. В этой статье мы взглянем на основные фичи JPA Buddy, немного обсудим его историю и поговорим о его преимуществах. Надеюсь, он займет достойное место среди любимых инструментов Java-разработчиков, которые пользуютсяJPA, Spring, Liquibase и, конечно же, самой продвинутой Java IDE IntelliJ IDEA.

Откуда растут ноги

Мы создатели CUBA Platform (кстати, не так давно мы переименовали ее в Jmix :)) среды быстрой разработки приложений на Java. Платформа CUBA уникальный продукт. Он состоит из двух частей: фреймворка и инструмента разработки CUBA Studio. Одной из самых полюбившихся частей CUBA Studio стал Entity Designer. В сообществе CUBA более 20 000 разработчиков, и почти все они отмечают, насколько легко и быстро он дает создавать модель данных. Даже для тех, кто никогда не слышал о JPA, такие вещи как создание JPA-сущностей, ограничений модели данных и DDL-скриптов становятся легкой задачей.

В 2016 году CUBA стала open-source проектом. С того момента мы приняли участие в десятках конференций по всему миру, собрали много отзывов и лучше поняли, что именно нужно разработчикам. Они нас часто спрашивали: Можно ли использовать ваш конструктор сущностей без CUBA Platform?. Рады сообщить, что с появлением JPA Buddy мы теперь можем смело ответить да!.

JPA Buddy не требует дополнительных зависимостей это просто инструмент. Вы можете пользоваться им не только на новых, но и на уже существующих проектах, которые используют JPA. Это плагин для IntelliJ IDEA, который помогает вам писать связанный с JPA код, находить и исправлять потенциальные ошибки, проводить рефакторинг и выполнять другие трудоемкие, но достаточно шаблонные операции.

Область применения

Перед тем, как написать первую строчку исходного кода JPA Buddy, мы провели опрос и собрали различные сценарии использования JPA и сопутствующих технологий. Результат оказался достаточно предсказуемым: среднестатистическое приложение в настоящее время это приложение на Spring Boot с Hibernate в качестве реализации ORM, Spring Data JPA в качестве механизма управления данными и Flyway или Liquibase для системы миграции базы данных. Ах да, чуть не забыли про Lombok... В общем, на этом стеке мы и сконцентрировались в первом релизе.

Говоря о предназначении JPA Buddy, мы поставили перед собой следующие цели:

  • Сократить написание шаблонного кода вручную: инструмент должен генерировать код быстрее ручного ввода

  • Не заставлять тратить время на чтение документации: инструмент должен предоставлять интуитивно понятные визуальные конструкторы

  • Оставить свободу выбора: инструмент должен не диктовать какойлибо конкретный стиль написания кода, а поддерживать его различные варианты

  • Выявлять потенциальные проблемы и предлагать решения для наиболее распространенных: инструмент должен предупреждать разработчика о проблемах на этапе написания кода, а не в рантайме

  • Обеспечить обзор проекта с точки зрения данных и удобную навигацию между связанными сущностями

В первом релизе мы смогли реализовать достаточно значительный объем функциональности, охватывающей большинство аспектов разработки модели данных. Хорошая новость для тех, кто использует Liquibase: инструменты для работы с ним уже реализованы и доступны. Не очень хорошая новость для пользователей Flyway: он входит в список наиболее приоритетных фич :)

В долгосрочной перспективе мы собираемся реализовать следующие функции:

  • Аннотации Hibernate: @Where, @NaturalId, @Formula, поисковые аннотации и т. п.

  • Визуальный конструктор запросов

  • Аудит с использованием Envers и Spring Data JPA

  • Генерация модели по существующей схеме базы данных

  • Поддержка Kotlin

В дальнейшем мы учтем и другие функции: поддержка Quarkus и Micronaut, REST API и генерация пользовательского интерфейса для CRUD-операций.

Как видите, впереди еще долгий путь, и мы были бы очень признательны за вашу помощь в расстановке приоритетов разработки не стесняйтесь высказывать свою точку зрения через нашу форму, Twitter или Discord.

Общий обзор

Давайте посмотрим, как выглядит JPA Buddy. После его установки у вас появятся 3 новые панели инструментов: JPA Structure, JPA Palette и JPA Inspector.

JPA Structure

Панель JPA Structure расположена в левом нижнем углу. Она позволяет посмотреть на проект с точки зрения модели данных. С ее помощью можно:

  1. Перемещаться по модели данных. Структура сущностей представлена в иерархическом виде. По ней легко перейти к объектам, ссылающимся на текущий объект, и к тем, на которые ссылается текущий объект. Это особенно полезно для тех, кто только начинает погружаться в существующий проект с большим графом сущностей, или для код-ревьюеров, которые видят часть модели впервые и им нужно в ней быстро разобраться.

  2. Создавать объекты, связанные с данными: сущности, JPA-конвертеры/Hibernate-типы, Spring Data репозитории и Liquibase-скрипты.

  3. Увидеть, для каких сущностей созданы какие репозитории.

  4. Просматривать скрипты Liquibase и их внутреннюю структуру.

  5. Настраивать параметры плагина, такие как соединение с БД, Persistence Units и некоторые другие, которые плагин не обнаружил автоматически.

JPA Palette и JPA Inspector

Панель JPA Palette находится справа вверху, и ее содержимое зависит от контекста. Она доступна только тогда, когда Buddy готов предложить чтото для быстрой генерации кода. Сейчас панель появляется при редактировании следующих объектов: JPA Entity, Spring Data репозиториев и Liquibase-скриптов. Для генерации какого-либо элемента просто выберите нужный вариант в списке и кликните по нему дважды.

JPA Inspector размещается справа внизу, под JPA Palette, и открывается вместе с ним. С помощью JPAPalette можно генерировать новый код, а с помощью JPAInspector редактировать уже существующий. В нем видно, как можно сконфигурировать выбранную часть кода, будь то поле сущности или выражение изLiquibase-скрипта.

Все это будет полезно как для новичков, так и для опытных разработчиков. Первые могут посмотреть на полный список вариантов, выбрать подходящий и сгенерировать корректный код с помощью понятных визуальных конструкторов. Сеньоры, в свою очередь, часто забывают мелочи, которые не используются в повседневной жизни, и Buddy сэкономит несколько секунд драгоценного времени на поиск в документации правильной аннотации или синтаксиса.

Интеграция с Liquibase

Хорошие новости для тех, кто использует Liquibase для управления версиями схемы базы данных: JPA Buddy тесно с ним интегрирован, он позволяет удобно редактировать и создавать Liquibase-скрипты, а также гибко управлять типами атрибутов. Давайте посмотрим, как именно JPA Buddy поможет вам работать с Liquibase.

Во-первых, в JPA Buddy есть визуальный конструктор для редактирования Liquibase-скриптов. Он показывает различные доступные команды плагина в JPAPalette, а панель инструментов JPAInspector дает увидеть настройки, которые можно применить к выбранному выражению.

Во-вторых, JPA Buddy дает определить свои собственные маппинги для сопоставления Java-типов (Конвертеров/Hibernateтипов) и типов, которые должны использоваться для каждой конкретной СУБД. Приведем несколько примеров, когда эта функция будет полезна:

  • Допустим, у вас в сущности есть поле типа byte[]. Что генератор схемы Hibernate, что Liquibase сопоставят ваш массив с довольно экзотическим типом OID. Думаю, многие разработчики предпочли бы использовать bytea вместо предлагаемого по умолчанию типа. Это можно легко сделать, создав маппинг с Java-типа byte[] на БД-тип bytea в настройках проекта в JPA Buddy.

  • Использование JPA-конвертера или кастомного Hibernate-типа вызывает непредсказуемое поведение или даже ошибки в стандартных генераторе схемы Hibernate и генераторе скриптов Liquibase. С помощью JPA Buddy можно явно указать нужный тип, чтобы решить эту проблему.

  • Поля типа String по-умолчанию хранятся как varchar, то есть не поддерживают Юникод. С помощью JPA Buddy легко изменить этот тип на nvarchar, с которым этой проблемы нет.

Все эти случаи обычно решаются с помощью атрибута columnDefinition, однако это решение не будет работать для проектов, где одновременно используется несколько СУБД. JPA Buddy позволяет указать, какой именно маппинг использовать для конкретной СУБД.

Наконец, функция, экономящая наибольшее количество времени наш генератор Liquibase-скриптов. Исходя из нашего опыта (который совпадает с опытом разработчиков принявших участие в ранее упомянутом опросе), есть два основных способа создания Liquibase-скриптов:

  • Написание вручную

  • Создание скриптов путем сравнения двух баз данных: исходной (представляющей фактическое состояние модели) и целевой (с предыдущим состоянием модели)

Для тех, кто предпочитает первый вариант, JPA Buddy включает уже упомянутый ранее конструктор Liquibase-скриптов.

Однако, второй вариант наиболее распространен. Итак, сравниваем две базы данных. Целевую базу данных относительно легко получить, например, можно просто создать дамп базы данных продакшена. Сложности возникают с получением исходной базы данных.

Начнем с небольшой проблемы: может случиться так, что база данных, используемая для разработки на ноутбуке разработчика, не того же типа, что и база данных на продакшене. Это можно исправить, например, запустив MS SQL в Docker на Mac.

Более серьезная проблема состоит втом, что трудно найти чистую исходную базу данных, поскольку она обычно формируется впроцессе разработки генератором схемы Hibernate. Часто это приводит кбольшому количеству мусорных таблиц иатрибутов, которые вконечном итоге появляются вбазе данных продакшена. Чтобы избежать подобного рода мусора, приходится тратить еще час или два напросмотр схемы базы данных перед запуском генерации Liquibase-скриптов.

ВJPA Buddy есть замечательная функция генерации Liquibase-скриптов напрямую, путем сравнения ваших объектов JPA сцелевой базой данных (или snapshotом целевой базы данных). Выможете использовать H2в целях разработки ипо-прежнему генерировать правильные журналы изменений для Oracle, MSSQL или того, что выиспользуете впродакшене. Подобный подход гарантирует, что если увас есть мусор вжурналах изменений, это именно тот мусор, который есть увас висходном коде. Все, что вам нужно, это содержать модель данных вчистоте, итогда миграция неприведет кнежелательным артефактам вбазе данных продакшена.

Еще одна особенность генератора журнала изменений это возможность фильтровать полученные выражения по 3 категориям:

  • содержащие только безопасные операторы, которые не могут дать сбой при обновлении или полностью уронить ваше приложение, например, добавление нового столбца

  • содержащие инструкции, которые могут завершиться ошибкой при обновлении, но не привести к потере данных, например, применение ограничения уникальности

  • содержащие операторы, которые вызовут потерю данных, например, удаление таблицы или столбца

Вы сами решаете, как разделить такие утверждения: поместить их в отдельные скрипты Liquibase или просто выбрать им нужную метку или контекст в редакторе.

Заключение

В этой статье мы посмотрели на первый релиз JPA Buddy. Очевидно, что как и любой новый продукт, JPA Buddy не может полностью избежать проблем и багов, особенно в своем первом релизе. Сейчас мы концентрируемся на устранении замечаний от пользователей, улучшении существующей функциональности, определении наиболее приоритетных функций, которые мы могли упустить из виду, и их реализации.

Говоря прямо, мы хотели бы вдохновить вас стать первыми пользователями JPA Buddy и сформировать сообщество энтузиастов. Установите JPA Buddy, попользуйтесь им и поделитесь своими отзывами с нашей командой разработчиков: это очень поможетнам выбрать правильное направление развития продукта. Также подпишитесь на наш Twitter: там мы показываем, какие еще фичи есть у JPA Buddy и как ими пользоваться. Думаю, вы найдете что-то полезное именно для вас.

Подробнее..

Перевод 10 топовых плагинов для IntelliJ IDEA, которые ты не должен пропустить

17.06.2021 16:13:58 | Автор: admin

Хотя IntelliJ IDEA является полноценной IDE (Интегрированная среда разработки), вы наверняка захотите ее персонализировать. В JetBrains Marketplace есть множество плагинов с полезными функциями, которые могут удовлетворить ваши личные или деловые потребности.

Библиотека огромна, и в ней легко заблудиться. В этой статье мы поделимся недавно появившимися и всеми любимыми плагинами. Нам также интересно узнать, какие плагины любите вы, поэтому, пожалуйста, расскажите о них в комментариях.

Напоминаем, что все плагины можно установить через Настройки/Параметры | Плагины или на вкладке Плагины на экране приветствия.

Погнали!

Хиты

Плагин Jump to Line

Многие навигационные действия в дебаггере IntelliJ IDEA позволяют установить точку останова в нужном месте, но иногда необходимо достичь строки одним щелчком мыши. Здесь на помощь приходит плагин Jump To Line. Он позволяет добраться до любой строки и установить там точку выполнения, не выполняя предыдущий код.

Таким образом предлагается простая навигация - просто перетащите стрелку в область Gutter, поместив точку выполнения в нужную строку. Помните, что перед перемещением стрелки необходимо приостановить выполнение программы.

Узнайте больше об этом плагине в нашем блоге.

Плагин Key Promoter X

Не секрет, что кодинг без использования мыши быстрее и эффективнее, но как стать ориентированным на клавиатуру, когда в IntelliJ IDEA так много сочетаний клавиш, которые нужно запомнить? Key Promoter X научит вас пользоваться ими. Как настойчивый и дотошный тренер, он отобразит всплывающую подсказку с соответствующим сочетанием клавиш при нажатии на элемент внутри IDE. Более того, для кнопок, не имеющих шортката, Key Promoter X предложит вам создать его.

Практика доведет все до идеала! Через некоторое время вы заметите, что подсознательно экономите время и используете нужный шорткат.

Плагин Maven Helper

Если вы ищете дополнительные возможности для работы с проектами Maven, этот плагин вам просто необходим. Он позволяет просматривать, анализировать и исключать конфликтующие зависимости. Также можно запускать и отлаживать цели Maven и многое другое. Попробуйте этот 5-звездочный плагин!

Плагин Doc-Aware Search Everywhere

Это отличное расширение для часто используемого диалогового окна Search Everywhere. Этот плагин добавляет справочные статьи в список результатов поиска. Просто нажмите на ту, которая кажется подходящей, и она появится в вашем веб-браузере по умолчанию. Это действительно помогает сэкономить кучу времени, поскольку вам больше не придется вручную открывать справку по продукту в браузере и искать статью самостоятельно.

Плагин Rainbow brackets

Если вас когда-нибудь раздражали многочисленные повторяющиеся скобки с вложенными элементами, этот плагин станет вашим спасением. Он присваивает каждому набору открывающих и закрывающих скобок свой собственный цвет, облегчая отслеживание того, где начинается и заканчивается блок кода. Поверьте, как только вы попробуете его, вы поймете, что вам все время не хватало именно этого.

Плагин Randomness

Вам нужно добавить в проект рандомные данные, например, слово, число или строку? Если у вас закончились варианты, установите этот плагин и нажмите Alt+R в Windows и Linux или R в macOS, чтобы увидеть выпадающий список возможных типов данных, которые вы можете добавить. Выберите нужный, и тогда произойдет волшебство - плагин Randomness будет добавлять разные значения каждый раз, когда вы применяете это действие.

Плагин EduTools

Этот плагин полезен как для учащихся, так и для преподавателей. Он позволяет изучать и преподавать языки программирования, такие как Kotlin, Java, Python, JavaScript, Rust, Scala, C/C++ и Go, прямо из IDE. Если вы изучаете программирование, мы призываем вас учиться на практике. Установите плагин, чтобы присоединиться к публичному курсу программирования, доступному в системе. Также вы можете записаться на индивидуальный курс вашего учителя или коллеги по работе. Да, вы не ослышались, плагин Edu Tools позволяет создавать упражнения и делиться ими со своими коллегами.

Плагин GitToolBox

IntelliJ IDEA уже поддерживает полноценную интеграцию с Git, но этот плагин предлагает дополнительные возможности, которые можно использовать по своему усмотрению. Люди приобретают его в основном для inline blame - аннотации, которая показывает, кто и когда изменил код в строке. GitToolBox также добавляет отображение статуса, автоматическую выборку, оповещения и многое другое.

Установите этот плагин, чтобы присоединиться к более чем полумиллиону людей, которые используют его для оптимизации ежедневного рабочего процесса Git.

Плагин WakaTime

Это как фитнес-трекер, но для мониторинга вашей активности в написании кода. Плагин WakaTime предоставляет услугу отслеживания времени, автоматически генерируя изящные метрики и аналитические данные. Используйте его для анализа производительности команды или для поиска путей повышения скорости разработки программ.

Плагин Extra Icons

Плагин Extra Icons предназначен для тех, кто хочет приукрасить вид проекта. Он добавляет набор значков, которые не поддерживаются IntelliJ IDEA по умолчанию. Они выглядят потрясающе и упрощают навигацию между файлами, поскольку вы можете визуально определить их тип. Кроме того, значки очень легко настраиваются. Вы можете настроить их в Preferences| Settings / Appearance & Behavior/ Appearance/ Extra Icons.

Бонус

В качестве дополнения установите Nyan Progress Bar, чтобы сделать индексирование более спокойным занятием. Если вам не нравится кот Nyan, попробуйте других персонажей, например, Mario или случайного покемона.

Мы надеемся, что эти плагины помогут вам настроить вашу IDE и буду делать вас немного счастливее каждый день. Оставайтесь продуктивными и получайте удовольствие от работы с IntelliJ IDEA!

Удачной работы!


В преддверии старта курса "Java Developer. Basic" приглашаем всех желающих на бесплатный двухдневный интенсив по теме "Хороший код".


Подробнее..

Обновленный плагин YouTrack для IDE на платформе IntelliJ

03.06.2021 20:19:56 | Автор: admin

Привет Хабр!

В командах разработки трекеры задач и IDE редко существуют друг без друга. Поэтому мы решили существенно проапгрейдить плагин YouTrack для IDE на платформе IntelliJ. Плагин интегрируется с вашими любимыми IDE от JetBrains AppCode, CLion, DataGrip, GoLand, IntelliJ IDEA, PhpStorm, PyCharm, Rider, RubyMine и WebStorm, а также с Android Studio и дает вам доступ ко всем задачам и уведомлениям прямо из IDE. Также с помощью плагина стало удобнее вести учет времени. Для него появилось несколько режимов теперь вы сможете сосредоточиться на написании кода и не тратить время на отчетность. Ниже расскажу обо всем подробнее.

Карманный трекер: все под рукой

Командам, которые используют в работе баг-трекеры, часто нужен доступ к задачам прямо по ходу написания кода в IDE: например, чтобы добавить к текущей активной задаче поясняющий комментарий, изменить ее приоритет, и просто чтобы быть в курсе любых изменений. Плагин YouTrack не только решает эту проблему, но и заботится о процессе учета времени, помогая синхронизировать работу в IDE с записями о затраченном времени в задачах YouTrack.

Плагин отображает список задач, актуальных для вас прямо сейчас. Это может быть ваш личный бэклог, задачи к предстоящему релизу, технический долг. Список можно в любой момент изменить, выведя на первый план актуальные задачи. Вы можете обновлять задачи прямо из IDE: добавляйте комментарии, выполняйте команды и меняйте статус все это позволит держать команду в курсе прогресса. Кроме того, плагин позволяет получать в IDE уведомления об изменениях в задачах (те же, что вы получаете по почте) и наоборот создавать новые задачи в YouTrack всего за пару кликов, предварительно выделив нужный кусок кода в IDE.

Остаемся в контексте текущих задач

Команда YouTrack придерживается простого правила: для каждого изменения в коде должна быть соответствующая задача в баг-трекере. Это помогает понять, кто чем занят, и обеспечивает прозрачность процесса разработки. Кодовая база со временем растет, но мы всегда знаем, почему был добавлен или изменен тот или иной кусок кода, какую проблему это позволило решить и насколько безопасно дальнейшее редактирование этого кода. Кроме того, соответствующую задачу мы упоминаем в сообщениях коммита: сами по себе сообщения коммита не всегда бывают информативными, зато упоминание соответствующей задачи существенно добавляет контекста. Кстати, интеграция YouTrack с VCS позволяет отслеживать коммиты с упоминанием задач и привязывать их к этим задачам. В результате страница задачи демонстрирует все этапы разработки зайдя на нее, вы получите всю необходимую информацию.

Получается, какой бы код мы ни писали, где-то в YouTrack есть задачка, которая поясняет, зачем нужен этот код и какую проблему он решает. Чтобы не приходилось синхронизировать код с задачами вручную, плагин YouTrack позволяет выбрать текущую активную задачу и привязать к ней все дальнейшие действия. Затраченное на код время будет также автоматически записываться в активную задачу.

Вообще, плагин позволяет вести учет затраченного времени несколькими способами об этом сейчас расскажу подробнее.

Теряем счет времени с автоматическим режимом учета

Включив автоматический режим, вы можете забыть о таймерах. Плагин зарегистрирует каждую минуту вашей работы, учтет время активности в IDE и автоматически зафиксирует затраченное время в YouTrack. Обратите внимание: чтобы использовать автоматический режим, нужно выбрать текущую задачу в баг-трекере только так плагин будет знать, над чем вы работаете и куда записывать время.

У автоматического режима есть несколько настроек. Например, он может вносить в систему затраченное время при каждом коммите, при закрытии проекта в IDE, по заданному вами графику (например, каждый день в 19:00) или по прошествии определенного периода неактивности в IDE.

Контролируем каждый шаг в ручном режиме

Если вы хотите вести учет рабочего времени самостоятельно, то вам подойдет ручной режим. Он позволяет отслеживать время вручную попросту запуская и останавливая таймер. Когда работа будет окончена, вы сможете внести зарегистрированное время в YouTrack буквально в один клик.

Также вы можете отключить систему учета вообще и просто периодически вносить время в систему, вручную указывая задачу, продолжительность и тип работы и пр.

Попробуете?

Лучше один раз увидеть, чем сто раз услышать. Плагин можно использовать с версией 2021.1 всех IDE JetBrains на платформе IntelliJ, включая AppCode, CLion, DataGrip, GoLand, IntelliJ IDEA, PhpStorm, PyCharm, Rider, RubyMine и WebStorm, а также с Android Studio. Чтобы установить плагин, откройте в IDE меню Settings -> Plugins и найдите там плагин YouTrack Integration.

Для настройки плагина вам понадобится YouTrack версии 2020.4.6808 или младше и постоянный токен.

Каких еще возможностей вы ждете от интеграции? Что позволило бы еще эффективнее использовать YouTrack вместе с IDE? Расскажите нам о своем опыте! Ваши отзывы помогут нам сделать плагин YouTrack еще лучше.

Ваша команда YouTrack

Подробнее..

Скринкаст простейший плагин для IntelliJ IDEA

02.09.2020 00:22:36 | Автор: admin
Многие боятся писать плагины для IDE потому, что кто-то их напугал, что это безумно сложно. Это не совсем так: простые плагины для бытовых нужд писать вполне возможно.

Давайте сделаем простейший плагин, который при нажатии на Ctrl+T весь текст, выделенный в редакторе, отправляет прямиком в Twitter. Потом каждый его сможет заточить для собственных нужд.

В идеале, такая штука пишется за пару минут, при этом демонстрируя идею, как начать создавать свои плагины.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru