Обнаружение циклических зависимостей со Знатоком

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

5
задан Lóránt Pintér 23 October 2009 в 10:16
поделиться

3 ответа

Попробуйте запустить это из командной строки в корне вашего верхнего проекта:

mvn dependency:tree
2
ответ дан 14 December 2019 в 04:42
поделиться

Попробуйте использовать UCDetector , он помогает находить циклы зависимостей на уровне класса при разработке. Еще один полезный инструмент - Tattletale .

Он предоставляет вам отчеты, которые могут помочь вам

  • Определить зависимости между файлами JAR
  • Найти недостающие классы в пути к классам
  • Найдите, если класс находится в нескольких файлах JAR
  • Определите, находится ли один и тот же файл JAR в нескольких местах.
  • Со списком того, что каждый файл JAR требует и предоставляет
  • Проверить SerialVersionUID класса
  • Найти похожие файлы JAR, которые разные номера версий
  • Найти файлы JAR без номера версии
  • Найти класс в файле JAR
  • Получить статус OSGi вашего проекта
  • Удалить использование API из черного списка

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

2
ответ дан 14 December 2019 в 04:42
поделиться

Я не уверен, связано ли это с maven (у вас не может быть циклических зависимостей между модулями с maven), но, возможно, я чего-то не понял. Тем не менее, вы можете использовать JDepend для анализа фрагмента кода и поиска циклических зависимостей (см. Интерпретация циклов зависимостей ). Если вы предпочитаете использовать JDepend из Eclipse, есть плагин JDepend4Eclipse .

Проверьте Batik из его репозитория subversion , запустите JDepend в его источниках и посмотрите, найдете ли что-нибудь Я думаю, что вы будете). Но, честно говоря, это была легкая часть. Избавиться от циклических зависимостей - другая история, и это может быть не так просто. Это может включать такие задачи, как перемещение классов из одного пакета в другой, переупаковка модулей, понимание того, как Batik ' s (обратите внимание, что его сценарий сборки Ant содержит 2220 строк) и т. д. Другими словами, это потребует серьезной работы над библиотекой, которую вы изначально просто хотите использовать (и если вы не внесете эти изменения, вам, возможно, придется их снова с более поздним выпуском). Мой совет: подумайте дважды, прежде чем начинать копать в этом направлении.

Для вашей информации есть также jdepend-maven-plugin , который полезен только в том случае, если вы хотите запустить JDepend в своем проекте. (т.е. ваш код), который не является вашим запросом.

4
ответ дан 14 December 2019 в 04:42
поделиться
Другие вопросы по тегам:

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