1

次のClass Ain がpkg1あり、Class Binpkg2と関数calculate()が次のように定義されpkg2 class Bているとします。

B.calculate(A a1, A a2);

a1パラメータとの型を特定したいa2。たとえば、ここでは でpkg1.Aあり、pkg1.Aasclass Aは に属しpkg1ます。

私の主な関心事は、プロジェクトをビルドしたくない、静的解析をしたい (すべてのソース ファイルを持っている) ことです。

Eclipse JDT を使用してパラメーターの型を推測する方法は知っていますが、javaparser ( https://github.com/javaparser/javaparser ) と javasymbolsolver ( https://github.com/javaparser/javasymbolsolver ) を使用してそれを行うにはどうすればよいですか。

Eclipse JDT では、パーサー環境でソース ファイルのパスを設定したところ、機能しました。しかし、javasymbolsolver では、typesolver にソース ファイルを追加しても機能しません。

CombinedTypeSolver combinedTypeSolver = new CombinedTypeSolver();
combinedTypeSolver.add(new JavaParserTypeSolver("path to the sourcefiles"));
JavaParserFacade j=JavaParserFacade.get(combinedTypeSolver);
SymbolReference<MethodDeclaration> ref = j.solve((MethodCallExpr) n);
4

1 に答える 1

1

依存関係へのパスも指定する必要があります。CombinedTypeSolver は、ソース ファイルだけでなく、すべての jar を見つける場所を認識している必要があります。

このようなものが動作するはずです:

combinedTypeSolver.add(new JarTypeSolver(new File("libs/mylib.jar")));

出典: 私は JavaSymbolSolver の管理者です

于 2017-01-08T17:21:46.377 に答える