2010-03-02 2 views
7

У меня есть проект Java, над которым я работал некоторое время. Дизайн начался довольно хорошо, но медленно ухудшался по мере внесения изменений. Я ищу какой-то инструмент, который будет анализировать проект. Было бы неплохо иметь карту зависимостей разных классов/методов. Я чувствую, что определенные методы доступны только для достижения очень конкретной цели. Я бы хотел исключить ненужный код и сделать мой дизайн лучше.Карта зависимостей для классов и методов Java

Любые предложения были бы замечательными! Благодаря!

+0

Много больших ответов! Спасибо за вашу помощь! – Ryan

+0

Это несколько не связано, но UML-инструмент Umbrello будет генерировать UML-диаграммы вашего кода. Это было бы полезно для меня в то время. – Ryan

+0

Просто заметили это из-за вашего недавнего комментария, но для дальнейшего использования вы можете проверить Structure101. –

ответ

5

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

Работая в качестве консультанта, меня очень часто бросают в огромную базу кода устаревшего кода. Как правило, первое, что я делаю, - это запустить JDepend, чтобы попытаться получить оценку на основе кода и всех зависимостей.

Удачи.

+1

JDepend предоставляет только зависимости между пакетами, а не классами и методами –

-1

Посмотрите на Apache Ivy

+0

Айви не плохой менеджер зависимостей, но он не отвечает на его вопрос, он ищет что-то, что проанализирует его существующие зависимости проектов. – Matt

1

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

1

Это не идеальный ответ, но он может быть полезен для быстрой проверки. Если вы используете Eclipse для своей разработки, вы можете просмотреть график вызовов для метода, выбрав его имя и нажав Ctrl-Alt-H (или щелкните правой кнопкой мыши и выберите «Иерархия открытых вызовов»). Вы можете использовать представление, которое открывается, чтобы узнать, что вызывает метод, и какие методы вызывают методом.

+0

Это очень помогает. Благодаря! – Ryan

1

Есть несколько хороших анализаторов для Java. До сих пор я играл с PMD и имел приличную удачу.

1

Вы также можете попробовать FindBugs. Помогает много с этими и многими другими проблемами.

1

Для этого доступны многие инструменты, в зависимости от размера вашей системы. Их дедушка - это коммерческий продукт Structure101.

http://structure101.com

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

Хорошим конкурентом является Stan4j. Он нигде не близок, но делает некоторые вещи лучше, особенно показывая контекст зависимости на уровне класса.

http://www.stan4j.com

(у меня есть оба продукта, но не имеют никакой коммерческой принадлежности либо)

Другой способ просмотра сложных зависимостей, в частности, на уровне проекта, является Dependency Structure Matrix (DSM).Хотя S101 может сделать DSM, Lattix имеет большую поддержку - он может работать с Spring и Hibernate зависимости:

http://lattix.com/

(я не использовал lattix - они делают это слишком сложно, чтобы оценить его, что странно, потому что Я работаю на некоторых очень больших систем)

Если ваша программа достаточно мала, и вы больше заинтересованы в простом уровне класса, то что-то вроде Architexa может помочь вам понять структуру лучше:

http://www.architexa.com/

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

http://asm.ow2.org/doc/tutorial-asm-2.0.html (см страницу вниз для матрицы в nify зависимостей)

Вот источник для него - это очень просто, но умный. Он работает с байт-кодами. http://cvs.forge.objectweb.org/cgi-bin/viewcvs.cgi/asm/asm/examples/dependencies/src/org/objectweb/asm/depend/

Смежные вопросы