내가 pkg2
에 pkg1
에서 다음 Class A
과 Class B
을 다음과 같이 기능 calculate()
가 pkg2
class B
에 정의되어 가정하자. 예를 들어 여기에 pkg1.A
및 pkg1.A
이 표시되고 class A
은 pkg1
에 속합니다.java-parser 및 java-symbol-solver를 사용하여 함수의 모든 매개 변수 유형을 추론하는 방법은 무엇입니까?</p> <pre><code>B.calculate(A a1, A a2); </code></pre> <p>내가 매개 변수 <code>a1</code> 및 <code>a2</code>의 유형을 식별 할 :
내 관심사는 프로젝트를 빌드하고 싶지 않아 정적 분석을하고 싶습니다 (모든 소스 파일이 있습니다).
Eclipse JDT를 사용하여 매개 변수 유형을 추론하는 방법을 알고 있지만 javaparser (https://github.com/javaparser/javaparser) 및 javasymbolsolver (https://github.com/javaparser/javasymbolsolver)를 사용하여 매개 변수 유형을 추정하는 방법을 알고 있습니다.
이클립스 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);
내가 프로젝트의 항아리가없는 JavaSymbolSolver의 mantainer 오전, 내가 가진 모든 소스 코드 (내가이 일을 갖고 있기 때문에 나는이 프로젝트를 빌드 할 의도가없는 것입니다 여러 프로젝트에 대한). javasymbolsolver에서 해결되지 않았습니까? 내가 EclipseJDT'astParser.setEnvironment ("pathTojreLib", "pathToSourceFiles", new String [] ("UTF-8"), true); – AmeyaKetkar
에서 이와 같은 작업을 수행했다. 도서관과 관련이 없다. 하지만 클래스 X가 라이브러리의 클래스를 확장하면 그에 대한 해결 방법은 없습니다 –
그렇다면 pkg1.A에는 라이브러리가 포함되지 않고 라이브러리의 클래스를 확장하지 않으면 올바르게 작동합니다. – AmeyaKetkar