#author("2021-12-14T02:32:34+00:00","","") // 下階層用テンプレート #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(おもしろかった[2],そうでもない[0]) #vote(おもしろかった[3],そうでもない[0]) #comment #topicpath SIZE(10){現在のアクセス:&counter;}