假设我有以下Class A
inpkg1
和Class B
inpkg2
和函数calculate()
定义pkg2
class B
如下:
B.calculate(A a1, A a2);
我想确定参数的类型a1
和a2
. 例如,在这里它将是pkg1.A
并且属于。pkg1.A
class 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);