- 追加された行はこの色です。
- 削除された行はこの色です。
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
Javaの開発プラットフォームとしてとても使いやすいEclipseですが、ソースコードなどを解析するEclipseプラグインなども、比較的容易に開発することができます。
Eclipseにはいろいろなコード解析方法が存在し、ちょっとややこしいです。とりあえず書きにメモっとく事にします。
**ICompilationUnitを起点にして、ソースコードを順次解析する方法 [#m21cf123]
Eclipse/プラグイン開発のTIPS集/org.eclipse.jdt.core.ICompilationUnit に書いたとおり、ICompilationUnit はIParentというインタフェースを実装していて、これのメソッド
IJavaElement[] getChildren() throws JavaModelException;
を用いることで、ソースコードを上から順次解析することができます。
**CompilationUnitに対して、Visitorパターンを用いてコードを走査する方法 [#gfadb319]
[[ソースコードを解析するパーサASTParser>Eclipse/プラグイン開発のTIPS集/ソースコードを解析するパーサASTParser]]に書いたとおり、 org.eclipse.jdt.core.ICompilationUnitからorg.eclipse.jdt.core.dom.CompilationUnit を生成し、そのインスタンスに対してVisitorパタンを適用してソースコードを走査することができます。
**TIPS集 [#p101f5a1]
*** パッケージエクスプローラからICompilationUnit [#w6b2b07d]
アクションやハンドラ経由でパッケージエクスプローラからICompilationUnitを取得したいケースがありますが、以下のようにやればOKですね。
public Object execute(ExecutionEvent event) throws ExecutionException {
ISelection selection = HandlerUtil.getActiveMenuSelectionChecked(event);
if (selection instanceof IStructuredSelection) {
IStructuredSelection sselection = (IStructuredSelection) selection;
Object firstElement = sselection.getFirstElement();
if (firstElement instanceof ICompilationUnit) {
ICompilationUnit unit = (ICompilationUnit) firstElement;
// 色々処理。
}
}
}
return null;
}
**関連リンク [#u02a7b3b]
-[[Yahoo!グループ : Eclipse ML メッセージ : 2062 件中 924 件目を表示>http://groups.yahoo.co.jp/group/eclipse-ml/message/924?expand=1]]
-[[org.limy.eclipse.code.accessor.AccessorUtils>http://www.limy.org/dest/limy-eclipse/javasrc/org/limy/eclipse/code/accessor/AccessorUtils.html]]
----
この記事は
#vote(おもしろかった,そうでもない)
#vote(おもしろかった[1],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}