0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Советы и хитрости IntelliJ IDEA: 2. Анализ зависимостей

Советы и хитрости IntelliJ IDEA: 2. Анализ зависимостей

Как анализировать зависимости в IDEA с помощью Dependency Structure Matrix и других инструментов.

Этот перевод продолжает серию об IntelliJ IDEA:

Матрица зависимостей

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

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

Матрица структуры зависимостей (Dependency Structure Matrix или сокращенно DSM) может помочь вам визуализировать ваши зависимости и найти потенциальные проблемы. Во-первых, обязательно выполните команду build в свем проекте. Затем, чтобы запустить анализ, перейдя в меню «Analyze → Analyze Dependency Matrix. ». Вам необходима редакция IDEA Ultimate и включить входящий в нее плагин DSM Analysis.

После завершения анализа вы увидите нечто похожее на это:

Чтобы лучше понять матрицу, посмотрите на следующий скриншот.

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

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

Пока зависимости синего цвета, это хорошо, так как они только односторонние. Циклические зависимости будут показаны красным, что не очень хорошо. Но мы увидим это позже.

Визуальная помощь

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

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

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

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

  • Желтым цветом выделены пакеты, от которых зависит выбранный пакет
  • Зеленым цветом маркируются пакеты, которые зависят от выбранного пакета

Помимо выбора целого пакета, вы также можете щелкнуть по отдельным ячейкам. Цветовая кодировка такая же, есть только одна новая концепция. Фиолетовая ячейка представляет зависимости между теми же двумя пакетами, но в другом направлении.

Нам нужно идти глубже

Пока что мы работали только на уровне пакета. Это, несомненно, полезно, но часто вам нужно вдаваться в большие подробности. Это означает, что необходимо исследовать также зависимости между отдельными классами.

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

Циклические зависимости

Пока что мы рассмотрели только однонаправленные зависимости. Но то, к чему вы должны относиться очень осторожно, это циклические зависимости. В представлении DSM они отмечены красным:

Вы можете видеть, что класс Owner имеет 15 зависимостей от класса Pet, в то время как Pet имеет 5 зависимостей от Owner.

Выполнение действий

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

Вы даже можете реорганизовать свои классы прямо из представления DSM. Если щелкнуть ячейку с зависимостями, вы можете вызвать меню Find usages for dependencies. IDEA будет искать все места в одном из ваших классов / пакетов, где используется другой класс / пакет.

Давайте посмотрим на пример, чтобы быть более конкретным. Мы можем найти все места в пакете service, где используется что-либо из пакета vet. Результаты классифицированы по типу:

Теперь вы можете проверять вхождения по одному и проверить, можете ли вы улучшить ваши зависимости.

Анализ Maven зависимостей

До сих пор мы рассмотривали только внутренние зависимости в вашем собственном коде. Тем не менее, вы можете столкнуться с различными проблемами, в том числе с внешними зависимостями. Это сторонние библиотеки ваших проектов. В этом можно запутаться, поскольку у вас нет только прямых зависимостей, но ваши библиотеки имеют собственные зависимости (транзитивные зависимости). Вы можете столкнуться со многими проблемами, такими как конфликт версий зависимостей одного и того же артефакта или даже циклические зависимости. Maven предлагает вам создать представление дерева зависимостей, которое может помочь вам в анализе потенциальных проблем. Вы можете просто вызвать:

Читать еще:  Воронение оружия в домашних условиях: как заворонить ствол ружья или нож

Maven выведет ваше дерево зависимостей в текстовом формате, который может выглядеть примерно так (вот полный пример):

В дополнение к простому тексту, предлагаются различные другие форматы в качестве вывода, которые лучше подходят для представления графа зависимостей, такие как graphml или tgf.

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

ОБНОВЛЕНИЕ: Будьте осторожны с параметром verbose при использовании maven 3.x, так как под капотом он все еще использует алгоритм Maven 2 и может дать вам противоречивые результаты.

К счастью, IDEA предлагает инструмент с хорошим графическим интерфейсом для работы с графами зависимостей Maven. Этот инструмент уже давно используется в IntelliJ, но с версии 2019.1 он получил некоторые необходимые улучшения, которые делают его гораздо более полезным в проектах с большими графами зависимостей.

Чтобы показать график, зайдите в файл pom.xml и нажмите Shift + Ctrl + Alt + U (или ⌥ + ⇧ + ⌘ + U на Mac). Или щелкните правой кнопкой мышиDiagrams → Show Dependencies.

Вы увидите уменьшенный график зависимостей, где невозможно увидеть отдельные имена элементов, если вы не увеличите масштаб. Поиск отдельных элементов вручную может быть очень болезненным. К счастью, вы можете использовать команду Find как обычно, используя Ctrl + F.

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

Первый вариант — показать только прямых соседей. То есть только прямые зависимости текущего элемента и только элементы, которые напрямую зависят от выбранного элемента.

Обратите внимание, что это работает не только для отдельных элементов, но вы можете выбрать несколько элементов, удерживая кнопку Shift.

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

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

В приведенном выше примере вы можете увидеть конфликт между версиями JUnit. Существует явная зависимость от JUnit 3.8.1 и другой версии, транзитивно полученной через spring-boot-starter-test.

Плагин Maven Helper

Если графическое дерево зависимостей не то, что вам нужно, есть альтернатива для вас. Это плагин Maven Helper от Vojtech Krasa. Он использует иерархическое текстовое представление зависимостей, аналогично mvn dependency:tree, но с хорошими возможностями просмотра зависимостей.

Это также хорошая альтернатива, если вы используете IDEA Community Edition или используете более старую версию IDEA, где график зависимости Maven безполезен.

Чтобы использовать анализатор зависимостей, предлагаемый этим плагином, просто откройте любой файл pom.xml. Внизу вашего редактора появится новая вкладка под названием Dependency Analyzer, добавленная редактором.

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

Анализ Gradle зависимостей

Начиная с версии 2019.2, IDEA может наконец показать вам диаграмму зависимостей не только для Maven, но и для Gradle. Ура! Он работает почти так же, как диаграмма зависимостей Maven.

Просто зайдите в файл build.gradle и нажмите Shift + Ctrl + Alt + U (или ⌥ + ⇧ + ⌘ + U на Mac). Или щелкните правой кнопкой мыши → Diagrams → Show Dependencies.

Заключение

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

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

Импорт зависимостей Maven в IntelliJ IDEA

У меня есть небольшой вопрос об IntelliJ IDEA 11. Я только что импортировал проект из subversion-это проект maven. Но у меня есть проблема в зависимостях библиотеки maven, поэтому я не могу автоматически включать все зависимости maven — IDEA показывает ошибки зависимостей только при открытии этого класса/ вот что я получаю здесь:

поэтому я хочу, чтобы все зависимости были добавлены автоматически — это возможно или мне нужно пройти через все файлы классов, чтобы идентифицировать и добавить зависимости maven?!

Читать еще:  Как узнать какой процессор на самсунг s8. Сравнение топовых смартфонов Samsung Galaxy на процессорах Exynos и Snapdragon

UPDATE: после некоторых изменений я нашел, как каким-то образом решить мою проблему. Вот что я сделал:

но я думаю, что логически это не будет включать и проверять новые зависимости вперед. Есть ли область настроек для этого в intelliJ-auto export dependencies to classpath ?!

26 ответов

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

при импорте проектов Maven в IntelliJ обычно появляется информационное окно с вопросом, Хотите ли вы настроить Авто-Импорт проектов Maven. Это означает, что если вы внесете какие-либо изменения в свой POM, эти изменения будут загружены автоматически.

вы можете включить такие функция собирается Файл > Настройки > Maven > импорт, есть флажок, который говорит «импортировать проекты Maven автоматически».

Если это не поможет, то я бы предложил сделать полную очистку и начать снова:

  • закройте окно проекта (и IntelliJ) и удалите все *.iml файлы и все .idea папки (должен быть один на модуль)
  • выполнить mvn clean install из командной строки
  • повторно импортировать проект в IntelliJ и оплатить внимание, когда он просит вас включить автоматический импорт

Обновление IntelliJ 2016:

на импорт Maven проектов автоматически настройка была перемещена в Сборка, Выполнение, Развертывание > Инструменты Сборки > Maven > Импорт в ваших предпочтениях IntelliJ.

думал, что брошу свои $ 0.02 сюда: для меня исправление этого должно было пойти в

файл [меню] — > Настройки — > maven — > импорт и убрать «используйте maven3 для импорта проекта»

ref:http://youtrack.jetbrains.com/issue/IDEA-98425 (который может иметь несколько других идей тоже)

Update: снова столкнулся с этим, на этот раз с IntelliJ 15, у которого больше нет опции «Использовать maven3 для импорта». Причина была в том, что иногда IntelliJ «не разбирает зависимости maven правильно», и если он не может разобрать один из них правильно, он отказывается от все из них, видимо. Вы можете сказать, если это так, открыв окно Maven projects tool (меню View — > Tool Windows — > Maven Projects). Затем разверните один из ваших проектов maven и его зависимости. Если все зависимости подчеркнуты красным цветом, «Хьюстон, у нас есть проблема».

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

в моем случае он сказал «проблемы: нет версий, доступных для XXX» или «не удалось прочитать дескриптор для организации артефактов.xy.Z » ref:https://youtrack.jetbrains.com/issue/IDEA-128846 и https://youtrack.jetbrains.com/issue/IDEA-152555

кажется, в этом случае я имел дело с банкой, у которой не было связанного файла pom (в наше РЕПО Maven nexus, а также мой локальный репозиторий). Если это также ваша проблема, «urrent work around: если вам на самом деле не нужно использовать классы из этого jar в своем собственном коде (например, только транзитивная зависимость maven), вы можете на самом деле уйти от комментирования его из pom (временно), перезагрузки проекта maven, а затем раскомментировать его. Как-то после этого момента IntelliJ «вспоминает» свои старые рабочие зависимости. Добавление временного исключения Maven также может сделать это, если вы сталкиваетесь с ним из транзитивной цепочки зависимостей.»

еще одна вещь, которая может помочь, — использовать «более новую версию» maven, чем в комплекте 3.0.5. Чтобы настроить его для использования по умолчанию, закройте все окна intellij, затем откройте Настройки — > сборка, выполнение и развертывание — > инструменты сборки — > maven и измените домашний каталог maven, он должен сказать «для проекта по умолчанию» вверху при настройке этого, хотя вы можете настроить его для конкретного проекта как ну, пока вы «повторно импортируете» после его настройки.

другие вещи, которые могут помочь: удаление папок кэша intellij (windows: HOMEPATH/.XXX linux

/.IdeaIC15) и / или удаление и переустановка самого IntelliJ. ГЛ!

Топ 5 тем оформления для Intellij IDEA и как выбрать свою

16 августа 2019

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

Сегодня рассмотрим 5 лучших тем оформления для JetBrains IntelliJ IDEA, которые рекомендую сами разработчики — люди, которые проводят бОльшую часть своей жизни, наблюдая буквы и цифры на экране. Кроме этого, рассмотрим несколько советов, по выбору идеальной темы.

Как выбрать подходящую тему для IntelliJ IDEA

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

У каждого разные глаза и разные потребности

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

Читать еще:  Как войти в домашнюю группу Windows 7?

Окружающая обстановка — окружающее освещение, оборудование и многозадачность

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

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

Вы должны учитывать не только условия окружающего освещения, но также окна и контент, которые вы видите при переключении между задачами на рабочем столе. Например, если вы склонны переключаться между Google Docs в вашем браузере и темной IDE, разница между яркостью стандартной Google Docs и темной темой IDE будет не самой подходящей для ваших глаз.

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

Светлая или темная?

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

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

Импорт пользовательских схем в IntelliJ

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

Для Windows и Linux путь будет такой: File > Settings > Editor > Color Scheme

Соответственно для Mac: IntelliJ IDEA > Preferences > Editor > Color Scheme

Топ 5 тем оформления для Intellij

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

Tomorrow – завтра, в переводе с английского. И ничто не заставит писать код быстрее, чем дедлайн, который наступит завтра. Возможно именно по этой причине, данная тема имеет именно такое название. Она остается популярной до сих пор, не смотря даже на то, что автор base 16, перестал ее поддерживать.

Tomorrow состоит из теплых пастельных тонов, с подходящим синтаксическим акцентом, и делится на 5 вариантов: «Завтра», «Завтра вечером», «Завтра восьмидесятые», «Завтра синий» и «Завтра яркая ночь».

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

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

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

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

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

Одна из самых популярных темных тем для IntelliJ — Monokai. Она основана на оригинальной теме Monokai, разработанной в 2006 году Вимером Хазенбергом для редактора Sublime Text, и в настоящее время принята большинством текстовых редакторов.

Предлагая превосходный контраст, оставаясь при этом легким для глаз с не совсем черным фоном, Monokai является одной из тем IntelliJ для разработчиков и пользователей с дальтонизмом.

Для большинства пользователей, Darcula является стандартной темой IntelliJ, но это не значит, что она бесполезна. В этой классической темной теме присутствуют веселые пастели на голубоватом темно-сером фоне.

Выбор темы для вашей IDE, вероятно, не такое уж и важное решение, но, тем не менее, это ваша основная рабочая область, и вы должны чувствовать себя комфортно и работать продуктивно.

Ссылка на основную публикацию
Статьи c упоминанием слов:

Adblock
detector