Какой инструмент вы бы порекомендовали обнаружить циклические зависимости пакета Java, зная, что цель состоит в том, чтобы явно перечислить конкретные классы, вовлеченные в обнаруженный "цикл между пакетами"?
Я знаю о classycle и JDepend, но они оба не в состоянии перечислить классы, участвующие в зависимости циклического пакета. Metrics имеет интересное графическое представление циклов, но оно опять-таки ограничено пакетами, и иногда его довольно сложно читать.
Я устал, чтобы получить:
"у вас есть зависимость цикла пакета между этими 3 пакетами
у вас есть классы ххх в каждом
удачи в поиске правильных классов и разорвать этот цикл "
Знаете ли вы какой-либо инструмент, который делает дополнительный шаг, чтобы фактически объяснить вам, почему цикл обнаружен (то есть "перечислить вовлеченные классы")?
Riiight... Время объявить результаты:
@l7010.de: Спасибо за усилия. Я буду голосовать за вас (когда у меня будет достаточно представителей), особенно за ответ "CAP"... но CAP мертв в воде и больше не совместим с моим Eclipse 3.4. Остальное коммерческое, и я ищу только бесплатное ПО.
@daniel6651: Спасибо, но, как уже говорилось, только бесплатное ПО (извините, что не упомянуло об этом в первую очередь).
@izb как частый пользователь findbugs (использующий последнюю версию 1.3.5 прямо сейчас), я в одном клике, чтобы принять ваш ответ... если бы вы могли объяснить мне, какой вариант есть, чтобы findbug обнаруживал любой цикл. Эта функция упоминается только для версии 0.8.7 при прохождении (ищите "Детектор нового стиля, чтобы найти круговые зависимости между классами"), и я не могу его протестировать. Обновление: теперь это работает, и у меня был старый файл конфигурации findbugs, в котором эта опция не была активирована. Мне все еще нравится CAD ;)
ОТВЕТ... см. мой собственный (второй) ответ ниже