Findbugs может обнаружить круговые зависимости от класса и имеет плагин Eclipse также.
Хорошо... после тестирования DepFinder представил выше , оказывается, что это является большим для быстрого обнаружения простых зависимостей, но это не масштабируется хорошо с количеством классов...
, Таким образом, РЕАЛЬНЫЙ ФАКТИЧЕСКИЙ ОТВЕТ: CDA - Зависимость от Класса Анализатор
Это быстро, актуально, просто в использовании и предоставляет графическое представление классов и их круговых зависимостей. Мечта осуществляется;)
необходимо создать рабочий набор, в котором Вы вводите только каталог своих классов (.class) (никакая потребность иметь полный путь к классу)
работы опции "Detect circular dependencies - ALT - C ", как рекламируют, и не берет 100% ЦП в течение многих часов для анализа моих 468 классов.
Примечание: для обновления рабочей области необходимо открыть его снова(!) для инициирования нового сканирования классов.
Существует также Structure101, который должен сделать это.
И можно использовать инструмент с открытым исходным кодом ОГРАНИЧЕНИЕ , который является плагином Eclipse.
ОГРАНИЧЕНИЕ имеет графическое представление пакета, которое покажет Вам строки классам поэтому после некоторых щелчков (в зависимости от размера круга), Вы найдете преступника.
Первый возможный ответ... не симпатичен. Но это действительно начинает делать то, что я после (лучшее решение представлено ниже ).
Средство поиска Зависимости ! Загрузка это , разархивируйте его.
Это не самый современный или активный проект никогда, но если Вы редактируете [Средство поиска Зависимости] /bin/DependencyFinder.bat, добавьте его путь для DEFAULT_DEPENDENCYFINDER_HOME, установите JAVA_HOME, можно запустить его.
Тогда Вы нажимаете на кнопку 'Extract' (CTRL-E - первая кнопка), вводите Ваш путь классов и позволяете ему просканировать далеко.
хитрая часть должна нажать точно правильный набор 'программных элементов' и объектов 'закрытий', чтобы к не затопляемый уровнем деталей в результате.
И здесь Вы идете.
Каждый раз, когда Вы видите '<->', у Вас есть самостоятельно хорошее циклическая зависимость . (При выборе 'функций' на стороне 'закрытия' можно даже знать, какая функция действительно инициировала цикл - потрясающий.)
я готов протестировать любые другие предложения.
Существуют некоторые коммерческие инструменты: Structure101 & Lattix, который может использоваться с этой целью.
Один инструмент, который делает это, является программным обеспечением томограф . Это является коммерческим, и UI сосет: o
Мы используем сонар для обнаружения циклов пакетов. Он рисует красивый график зависимостей и показывает, какие из них идут в неправильном направлении. Вы даже можете перейти к источнику, в котором используется зависимость.
См. http://www.sonarsource.org/fight-back-design-erosion-by-breaking-cycles-with-sonar/