Помощь при написании кода
Jmix Studio предоставляет автодополнение и инспекцию кода, выделение ошибок и быстрое исправление, а также удобный рефакторинг кода и широкие возможности навигации.
Давайте рассмотрим, как выглядят основные инструменты для помощи при написании кода.
Инспекция кода
Jmix Studio автоматически обнаруживает и предлагает исправить типичные ошибки программирования в проекте перед его компиляцией.
В зависимости от уровня критичности Studio по-разному выделяет код, содержащий проблему.
 
Для некоторых инспекций Jmix Studio предлагает использовать быстрые исправления.
Быстрые исправления
Если при инспекции в коде обнаружена ошибка, в редакторе можно быстро внести исправление. Наведите курсор на выделенный фрагмент кода и нажмите Alt+Enter.
 
Другой способ — наведите курсор на выделенный фрагмент кода и щелкните значок /
. После этого вы сможете просмотреть доступные intention-действия.
 
Маркеры строк
Маркер строки — это значок на полосе слева окна редактора. Например, маркеры строк могут служить точками навигации для связанного кода:
 
Используя маркер строки, можно редактировать фетч-план в дескрипторе XML:
 
Навигация
Например, вы можете перейти к внедренному компоненту или локализованному сообщению в пакете сообщений. Удерживая Ctrl, щелкните левой кнопкой мыши по id компонента или ключу сообщения.
 
Рефакторинг
Вы можете легко и безопасно вносить изменения. В приведенном ниже примере мы изменим имя кнопки.
 
Используя рефакторинг, вы можете переименовывать или удалять перечисления и классы сущностей, компоненты и экраны.
Область применения помощи при написании кода
Рассмотрим основные части проекта и различные случаи использования инструмента помощи при написании кода.
- 
Перечисления и сущности - Инспекции
- 
- 
Сущность с таким же именем таблицы уникальна в хранилище данных. 
- 
Проверка наличия аннотации @InstanceName. 
- 
Обнаружение некорректного использования фетч-типа LAZYдля полей datatype и@OneToOne,@OneToMany,@ManyToManyи@ManyToOneс фетч-типомEAGER.
- 
Проверка наличия аннотаций JPA для каждого поля сущности. 
- 
Проверка того, что классы и атрибуты сущностей и перечислений имеют локализованные сообщения. 
- 
Проверка того, что атрибуты персистентного перечисления объявлены в соответствии с правилами Jmix — с использованием типа идентификатора. 
- 
Проверка наличия дубликатов аннотации @Version.
- 
Проверка наличия встраиваемых атрибутов, не отмеченных аннотацией @Embedded.
- 
Проверка наличия атрибута первичного ключа сущности. 
 
- 
- Быстрые исправления и intention-действия
- 
- 
Генерация имени экземпляра. 
- 
Добавление атрибута сущности с помощью дизайнера. 
- 
Добавление атрибута сущности в таблицы, формы и сетки. 
- 
Изменение разрешений атрибутов сущности для различных ресурсных ролей. 
- 
Изменение разрешений сущности для разных ресурсных ролей. 
 
- 
 
- 
XML-дескрипторы - Инспекции
- 
- 
Проверка имен свойств и путей в компонентах dataGridи других компонентах.
- 
Проверка атрибутов dataContainerиitemsContainer. Они должны ссылаться на существующий контейнер данных в текущем экране или на один из экранов, который включает текущий в качестве фрейма.
- 
Проверка следующих аспектов дескрипторов окон Jmix: - 
Атрибут expand;
- 
Уникальность id.
 
- 
- 
Сообщение о случаях, когда атрибут сущности используется компонентом UI в XML-дескрипторе, но не включен в фетч-план. 
- 
Проверка ошибок, когда в компоновке XML имеется более одного корневого компонента. 
- 
Поиск конфликтующих значений атрибутов width,height, иexpandв XML-дескрипторе.
- 
Проверка атрибута hierarchyProperty. Он должен быть того же типа, что и сущность в контейнере данных.
 
- 
 
- 
Фетч-планы - 
Проверка того, что для fetchPlanустановлен атрибутclass.
- 
Поиск свойств, объявленных дважды внутри одного и того же тега fetchPlan.
- 
Проверка, существует ли фетч-план с текущим именем в конфигурации другого фетч-плана. 
- 
Проверка, содержит ли свойство fetchPlanвнутренние свойства или атрибутfetchPlan. Тогда свойство должно указывать на сущность.
- 
Поиск ненужных свойств, которые можно опустить, поскольку они уже включены в фетч-план. 
 
- 
- 
Контроллеры - Инспекции
- 
- 
Проверка, ссылается ли на каждый сеттер только один установленный метод. 
- 
Инспекция компонентов, действий и компонентов данных, которые инжектируются в контроллер экрана. Сообщение, если инжектированные поля имеют неправильный тип. 
- 
Инспекция компонентов, инжектированных в контроллер экрана. Сообщение, если инжектированное поле не имеет стандартного типа, например, DataGridвместоDataGrid<MyEntity>. Обеспечивает быстрое исправление.
- 
Проверка, правильно ли реализован слушатель событий. Возможные сообщения: - 
Слушатель событий должен располагаться только внутри контроллера экрана. 
- 
Слушатель событий должен иметь возвращаемый тип void.
- 
Слушатель событий должен иметь один аргумент с типом, расширяющим java.util.EventObject.
- 
Не удалось найти указанный компонент UI. 
 
- 
- 
Проверка установленных делегатов. Возможные сообщения: - 
Делегат может быть установлен только внутри контроллера экрана. 
- 
Не удалось найти точку установки для делегата. 
- 
Точка установки должна быть методом с возвращаемым типом voidи одним параметром типаFunctionalInterface.
- 
Не удалось найти указанный компонент UI. 
 
- 
- 
Подсветка подозрительных назначений полям, которые, возможно, инжектируются контейнером. 
- 
Проверка, что компоненты UI созданы с использованием ComponentsFactory.createComponent().
 
- 
- Быстрые исправления и intention-действия
- 
- 
Изменения разрешений экрана для разных ресурсных ролей. 
- 
Создание XML-дескриптора для контроллера экрана. 
- 
Переход к пункту меню из контроллера. 
 
- 
 
- 
Логирование - Инспекции
- 
- 
Проверка, используется ли логгер org.slf4j.LoggerвместоSystem.out.println(),System.err.println()иjava.lang.ThrowableprintStackTrace().
- 
Подсветка выражений логирования, при которых теряется stack trace исключения. 
 
- 
 
- 
Меню - Инспекции
- 
- 
Проверка, нет ли в меню повторяющихся элементов. 
 
- 
 
- 
Безопасность - Инспекции
- 
- 
Проверка повторяющихся полей кода в ресурсных ролях. 
- 
Проверка повторяющегося поля имени в ресурсных ролях. 
- 
Проверка наличия экрана в проекте. 
- 
Проверка политики атрибутов сущности в ресурсных ролях. 
 
- 
 
- 
Бины и службы - Инспекции
- 
- 
Проверка того, что бин службы является правильным компонентом фреймворка Jmix. 
 
-