Как я могу построить метамодель Java Classes для генерации сервисного графа с анализом кода? - PullRequest
1 голос
/ 14 октября 2011

у нас есть SOA-система, построенная поверх EJB 3.0. мы вручную поддерживаем «карту обзора услуг», которая показывает, какие бизнес-сервисы вызывают какие доменные сервисы. это утомительно, подвержено ошибкам, и никто не хочет это делать: - /

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

Кто-нибудь знает инструмент, который делает хороший анализ кода для Java? я думаю о некоторой метамодели, которую я могу запросить, чтобы построить график.

что-то вроде:

  1. парсит все файлы из root dir xyz и строит метамодель для каждого класса а) например какие другие классы он использует б) какие классы используют этот класс в) какие интерфейсы он реализует г) каково это имя файла д) и так далее, я думаю, вы знаете, что я имею в виду
  2. дайте мне метамодель всех найденных вами файлов (java / class)
  3. сгенерировать график (ручная работа)
  4. вывод графика в формате файла ".dot" (направленный граф)
  5. используйте инструмент "точка", чтобы сгенерировать график в виде png, pdf, svg ...

у нас уже есть простое решение путем "просмотра" файлов .... но это не идеально.

любая помощь будет оценена

веселит Marcel

Ответы [ 3 ]

2 голосов
/ 14 октября 2011

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

1 голос
/ 14 октября 2011

Хах. Я написал эту точную систему не месяц назад для нашего EJB 2.0. Вот что я сделал:

  • скачал Java Parser
  • написал рекурсивный обходчик каталогов
  • написал древовидную структуру данных, которая позволяла мне хранить зависимости.
  • написал файл вывода .dot.

Это заняло у меня около недели и оказалось очень успешным, когда я обновил его, чтобы выводить файлы в виде изображений .svg через механизм twopi; теперь мы можем перемещаться по диаграммам классов в браузере, чтобы быстро определять области, представляющие интерес для потенциального рефакторинга, и интегрировать их в нашу автоматизированную среду сборки.

Напишите мне в личку, если вам нужна дополнительная информация.

0 голосов
/ 14 октября 2011

Существует инфраструктура Eclipse под названием MoDisco , которая соответствует вашим потребностям. Включает несколько метамоделей (Java, JSP, ...).

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

...