Как создать граф вызовов для проекта Java - PullRequest
3 голосов
/ 12 февраля 2011

Возможно ли создать глобальный граф вызовов приложения?

В основном я пытаюсь найти самый важный класс приложения.

Я ищу варианты для Java.

Я пробовал Doxy Gen, но он генерирует только графики наследования.

Мой текущий скрипт:

#! /bin/bash

echo "digraph G
{"
find $1 -name \*.class |
    sed s/\\.class$// |
    while read x
    do
        javap -v $x | grep " = class" | sed "s%.*// *%\"$x\" -> %" | sed "s/$1\///" | sed "s/-> \(.*\)$/-> \"\1\"/"
    done
echo "}"

Ответы [ 2 ]

2 голосов
/ 12 февраля 2011

javap -v и немного Perl получит ваши зависимости между классами.Вы можете сделать ваш анализатор немного более сложным и получить зависимости между методами.

Обновление: или, если у вас есть * nix или cygwin, вы можете получить список зависимостей как

find com/akshor/pjt33/image -name \*.class |
  sed s/\\.class$// |
    while read x
    do
      javap -v $x | grep " = class" | sed "s%.*// *%$x -> %"
    done

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

find com/akshor/pjt33/image -name \*.class |
  sed s/\\.class$// |
    while read x
    do
      javap -v $x | grep " = class" | sed "s%.*// *%%"
    done |
      sort | uniq -c | sort -n
1 голос
/ 12 февраля 2011

Для расширенного анализа кода вы можете взглянуть на http://www.moosetechnology.org/

Приветствия
Thomas

( edit: перемещено сюда по общему запросу, см .: Как сгенерировать граф вызовов Java )

...