Обнаружение цикла пакета Java: как я нахожу определенные классы включенными? [закрытый]

38
задан Peter Mortensen 22 April 2018 в 08:17
поделиться

8 ответов

Findbugs может обнаружить круговые зависимости от класса и имеет плагин Eclipse также.

http://findbugs.sourceforge.net/

14
ответ дан Peter Mortensen 27 November 2019 в 03:47
поделиться

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

, Таким образом, РЕАЛЬНЫЙ ФАКТИЧЕСКИЙ ОТВЕТ: CDA - Зависимость от Класса Анализатор

Это быстро, актуально, просто в использовании и предоставляет графическое представление классов и их круговых зависимостей. Мечта осуществляется;)

необходимо создать рабочий набор, в котором Вы вводите только каталог своих классов (.class) (никакая потребность иметь полный путь к классу)
работы опции "Detect circular dependencies - ALT - C ", как рекламируют, и не берет 100% ЦП в течение многих часов для анализа моих 468 классов.
Примечание: для обновления рабочей области необходимо открыть его снова(!) для инициирования нового сканирования классов.

screenshot

25
ответ дан Community 27 November 2019 в 03:47
поделиться

Существует также Structure101, который должен сделать это.

4
ответ дан Peter Mortensen 27 November 2019 в 03:47
поделиться

И можно использовать инструмент с открытым исходным кодом ОГРАНИЧЕНИЕ , который является плагином Eclipse.

ОГРАНИЧЕНИЕ имеет графическое представление пакета, которое покажет Вам строки классам поэтому после некоторых щелчков (в зависимости от размера круга), Вы найдете преступника.

1
ответ дан Peter Mortensen 27 November 2019 в 03:47
поделиться

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

Средство поиска Зависимости ! Загрузка это , разархивируйте его.

Это не самый современный или активный проект никогда, но если Вы редактируете [Средство поиска Зависимости] /bin/DependencyFinder.bat, добавьте его путь для DEFAULT_DEPENDENCYFINDER_HOME, установите JAVA_HOME, можно запустить его.

Тогда Вы нажимаете на кнопку 'Extract' (CTRL-E - первая кнопка), вводите Ваш путь классов и позволяете ему просканировать далеко.

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

  • Выбор только 'классы' в левой стороне ('программные элементы').
  • Выбор только 'классы' в правой стороне ('закрытия').
  • Добавляют "/javax?./,/org./,/sun. /" как шаблон исключения (и для программных элементов и для закрытий).
  • Нажимают на колеса (последняя кнопка - Вычисляют все - Ctrl + ).

И здесь Вы идете.

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

я готов протестировать любые другие предложения.

1
ответ дан Peter Mortensen 27 November 2019 в 03:47
поделиться

Существуют некоторые коммерческие инструменты: Structure101 & Lattix, который может использоваться с этой целью.

0
ответ дан 27 November 2019 в 03:47
поделиться

Один инструмент, который делает это, является программным обеспечением томограф . Это является коммерческим, и UI сосет: o

0
ответ дан Peter Mortensen 27 November 2019 в 03:47
поделиться

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

См. http://www.sonarsource.org/fight-back-design-erosion-by-breaking-cycles-with-sonar/

4
ответ дан 27 November 2019 в 03:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: