November 16, 2005

Abstract

LoveVector の、2005 年 11 月 16 日の記事一覧です。

prev
October 19, 2005
next
November 17, 2005

Eclipse 3.0/3.1 を共存させ Java コードを幸せに parse する

URI
https://okowa.org/vector/2005/11/16/eclipse-astparser
Created
2005-11-16T12:39:26+09:00

Eclipse JDT には,Java のソースコードを構文解析する ASTParser というクラスがあって,これを使えばまぁ簡単に抽象構文木を得ることができたりします:

String source  = "public class Foo {}";
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setSource(source.toCharArray());
ASTNode ast = parser.createAST(null);
...

ASTParser については dW の記事 EclipseのASTParserを試す などが読みやすいです。さすが中の人。

で本題。なんか Eclipse を 3.1 にアップデートしたら standalone アプリからは利用できなくなっちゃったんですよ。ロードの段階でコケるようで,Eclipse プラグインとして動かさなきゃいけないようです。むむー。

ちょっと困りました。いや,Eclipse プラグインとして動かすこと自体はそれほど抵抗ないんですが(別でプラグインも作ってるし),なにが嫌かって,とにかく遅いんですよ。起動が。

standalone で動かないってことは,普通の JUnit テストが動きません。「JUnit プラグインテスト」を利用することになります。これは,Eclipse プラグインアーキテクチャに沿ってテストを起動するもので,まぁ乱暴な言い方をすればテストを起動するたびに Eclipse を立ち上げ直すようなもので,遅すぎて単体テストを放り投げたくなること請け合いな代物。

なんとかして Eclipse とは独立に動かしたい。とはいっても,3.0 にダウンするわけにはいきません。Eclipse 3.0 は J2SE 5.0 非対応。いまさら Generic の無い糞世界に戻ったら発狂しそうです(ただでさえ Java を使ってるとイライラするのに!)。

‥‥と,ここで気づいてしまいました。解析対象の Java コードは 1.4 相当じゃん。今書いている Java コードは 5.0 だけど,解析対象の Java コードまで 5.0 に対応させなくてもいいじゃん。てことは,JDT ライブラリ用に 3.0 を,IDE 用に 3.1 を用意しておいて,プロジェクトのビルドパスには 3.0 の JDT ライブラリを食わせればいいわけだ。至極単純,なんで今まで気づかなかったんだろうorz

というわけで,解析対象をダウングレードし:

ASTParser parser = ASTParser.newParser(AST.JLS2);

ビルドパスを適当にいじって解決。今度は Eclipse プラグインとして上がらなくなりそうですが,パスを動的にいろいろ弄くれば何とかなりそう。ふう。

ちなみに,Bugzilla のほうにも上がってるようです。3.2 のロードマップには噛んでなさそうだけど。

むー。Nightly 入れたら ASTParser のインターフェース変わってた。ぐぎぎぎ。追っかけるのヤメヤメ。

Eclipse 3.2 で修正されたようです。わーい

Topic Path

  1. okowa.org
  2. LoveVector
  3. 2005
  4. Nov
  5. 16
Last-Modified
2012-03-15T21:51:09+09:00
Feeds
Recent Updates (RSS 1.0)
Powered by
XML::LibXSLT / format.xsl / Movable Type 5.13-ja
LoveVector: klm <klm at okowa dot org>