私は、別のスコープのクラスで使用されている変数宣言またはメソッド宣言を見つけるためのデータ構造を構築する機能を提供するライブラリまたはツールを探しています。Rascalを使ったJavaのメソッド/変数宣言
コード例:
class A
{
public void methodA()
{
B external = new B();
external.methodB(); // I would like to know the name/location where this method is declared. something like: classB.java ... line 3
}
}
class B
{
public void methodB()
{
}
}`
ラスカルは、この種の情報を取得するための良い候補でしょうか?私は以前にこのツールを使っていました。私が知る限り、私はASTを作成することができますが、これは特定の変数/メソッドが宣言されている範囲を決定するのに十分な情報を持っていません。 これが適切な候補でない場合、代替案に関するアイデアはありますか?現在私が探している候補者リストは次のとおりです:Antlr/symtab; JavaParser/JavaSymbolSolver;スプーン;ラスカル; JDT
私は自分の例で答えを試しましたが、いくつかのことは私にはあまり明確ではありません。あなたはmyTreeに何を入れましたか?そしてmyTree.declはどういう仕組みになっていますか?あなたの例に最も近いのは、[email protected]です。unitは、createAstsFromEclipseProjectから来るコンパイルユニットです。 これで私はmodel @ containmentを行うことができました[unit @ decl] これはあなたが上で説明したものになります。 なぜフィールド演算子(。)i.s.oを使用できるのか説明できますか?私が使っている注釈。 – Patrick
私は最新の連続ビルドを使用していると思います。古い安定版を使用している可能性があります。私たちはM3モデルを最近アノテーションを「キーワードフィールド」に切り替えたので、 '@ 'から' .'に移動しました。 – jurgenv