2

UIMAフレームワークでソースコードに注釈を付けるためのライブラリとしてJDTを使用しています。UIMAフレームワークでは、char[]形式でソースコードを取得します。今、私はこれらの変数がソースコードにバインドされていることを理解したいと思います。setResolveBinding(true)を実行しましたが、resolveBinding()を呼び出すと常にnullになります。javaDocによると、char []でsetSource()をフィードした場合、null以外の結果を得るには、setProject()とsetUnitName()が必要です。

ただし、これら2つのIJavaProjectとUnitNameは、ソースファイルをeclispeプロジェクトにインポートすることによってのみ取得できます。これは、私の状況では実行できません。

誰かがこの問題を解決しましたか?

4

2 に答える 2

2

UIMA フレームワークの jar ファイルを入手できますか? もしそうなら、jarファイルをトラバースできます。ソース コードの解析は、AST から情報を取得するための適切なオプションです。ただし、jar ファイルはコンパイルが成功した後にのみ生成されるため、有用な情報を取得するための良いオプションでもあります。

于 2013-03-14T14:04:49.477 に答える
0

複数のファイルにまたがるバインディングを取得するには、それらの一時ファイルを作成して操作する必要がありますchar[]( ASTParser docs から):

public void setEnvironment(String[] classpathEntries,
                       String[] sourcepathEntries,
                       String[] encodings,
                       boolean includeRunningVMBootclasspath)

IJavaProject が使用できない場合に使用する環境を設定します。[...]

public void createASTs(String[] sourceFilePaths,
                   String[] encodings,
                   String[] bindingKeys,
                   FileASTRequestor requestor,
                   IProgressMonitor monitor)

コンパイル ユニットのバッチの AST を作成します。バインディングが解決されている場合、バインディングの解決に関連する作業の多くを共有できるため、コンパイル単位のバッチを処理する方が効率的です。

バインディングが解決されるとき、すべてのコンパイル ユニットは同じ環境を使用して解決されます。この環境は、setEnvironment で事前に設定する必要があります。[...]

于 2013-05-05T10:25:00.853 に答える