2011-07-10 6 views
0

オブジェクト指向クラスの単一メソッドと正確に一致するメソッドとインスタンス変数の依存関係を調べる方法論を知っている人はいますか?私は、次のコードを持っている場合たとえば、:オブジェクト指向クラスのメソッド依存関係の決定

public class Foo { 
    private int x; 
    private int y; 

    public Foo() { 
     x = 1; 
     y = 2; 
    } 

    public void doFoo() { 
     doJaa(x); 
     x++;  
    } 

    private void doJaa(int xVar) { 
     System.out.println("x is: " + xVar); 
    } 

    private void nop() { 
     System.out.println("Nada!"); 
    } 
} 

は、私は何を探していたこと(私は決定したいメソッド「doFoo」を言う、方法を取ると、そのインスタンス変数やメソッドの依存関係のすべてを決定することでしたこれらの依存関係は、ビルド時)です。この場合、それらの依存関係は 'int x'、 'Foo()'、 'doJaa(int x)'になります。ただし、メソッド 'nop'と 'doJaa'の間に依存関係はありません。このタイプの分析には名前がありますか?その周りにもっと多くの情報を検索することができますか?私には私は

  1. 制御フローグラフ(私にはありません使用)
  2. 以下の分析技術を知っていますプログラム依存グラフ
  3. システム依存グラフ

1は、多くの使用ではありませんそれは制御の流れに関係している。 2は、単一のメソッド内またはメソッド境界内のいずれかで、制御およびデータの依存関係に関係しています。私はこれを研究しました、そして、それはあまりに細かいので、私が欲しいものではありません。 3は2からのフォローであり、また私が必要とするものに対しては細かすぎる方法です。

答えて

1

私は唯一のツールJDepend知っている:http://www.clarkware.com/software/JDepend.html

をしかし、私はそれが一つの方法の基礎に取り組んでいます疑います。おそらくバイトコード操作(エンジニアリング)ライブラリを使用して独自のロジックを実装する必要があります。

+0

ありがとうございます。私は自分でそれをやろうと思う。 Soot APIは私に必要な分析を提供します。私はこの話題にいくつかの論文があることを期待していましたが、私は何も見つけられないようです。私は、プログラム依存グラフ、システム依存グラフ、および制御フローグラフに関する情報しか見つけることができません。 – Joeblackdev

+0

すみませんが質問はありますが、なぜこれが必要ですか? – AlexR

+0

特定のメソッドにのみ関連するクラスからコードを抽出したいからです。言い換えれば、メソッドがあれば、実行可能なプログラムスライスを得るために、依存するクラスからすべてのコードを抽出したいと思います。 – Joeblackdev

1

このような特別な目的のために、あなたが使用するためのオフシェルフソフトウェアを見つけることは困難です。

これは、Javaバイトコードの静的解析によって行うことができますが、私はなぜあなたがそのような機能を必要としているのか分からず、それを分析するのが本当のメリットです。それがあなたのための特別な目的ならば、私はあなた自身でこのようなツールを書く必要があると思います。

関連する問題