3

アプリケーションのグローバル コール グラフを生成することはできますか?

基本的に、アプリケーションの最も重要なクラスを見つけようとしています。

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 "}"
4

2 に答える 2

2

javap -v少しの perl で、クラス間の依存関係を取得できます。パーサーをもう少し洗練させて、メソッド間の依存関係を取得できます。

更新: または、* nix または cygwin を使用している場合は、依存関係のリストを次のように取得できます。

com/akshor/pjt33/image -name \*.class | を見つけます。
  sed s/\\.class$// |
    読んでいる間×
    行う
      javap -v $x | grep " = クラス" | sed "s%.*// *%$x -> %"
    終わり

ヘッダーとフッターを追加すると、それをドットに渡してグラフをレンダリングできます。あなたの質問が示唆するように、どのクラスが他のほとんどのクラスで使用されているかを知りたい場合は、

com/akshor/pjt33/image -name \*.class | を見つけます。
  sed s/\\.class$// |
    読んでいる間×
    行う
      javap -v $x | grep " = クラス" | sed "s%.*// *%%"
    完了 |
      ソート | ユニーク -c | 並べ替え -n
于 2011-02-11T21:48:58.983 に答える
1

高度なコード分析については、http://www.moosetechnology.org/をご覧ください。

乾杯
トーマス

編集:一般的な要求によりここに移動しました。参照:Javaコールグラフを生成する方法

于 2011-02-11T21:39:50.413 に答える