如何为java项目生成调用图

时间:2011-02-11 21:35:00

标签: java call-graph

是否可以生成应用程序的全局调用图?

基本上我试图找到最重要的应用程序类。

我正在寻找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 个答案:

答案 0 :(得分:2)

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 :(得分:1)

对于高级代码分析,您可能需要查看http://www.moosetechnology.org/

干杯
托马斯

编辑:按一般要求向下移动,请参阅:How to generate a Java call graph