Eclipse JDT 라이브러리를 사용하여 Java 소스 코드를 구문 분석하여 클래스에 정의 된 모든 메소드를 찾는다. 코드에 메서드 본문에 "// xxxx"와 같은 주석이 포함되어 있으면 파서가 주석 앞에 멈추고 main (String [] args) 메서드는 무시됩니다. 그것을 할 수있는, 내가 코드를 구문 분석하는 데 사용하는 경우Eclipse JDT를 사용하여 Java 파일 구문 분석
public class Parser {
/**
* Parse java program in given file path
* @param filePath
*/
public void parseFile(String filePath) {
System.out.println("Starting to parse " + filePath);
char[] source = readCharFromFile(filePath);
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(source);
parser.setResolveBindings(true);
CompilationUnit cu = (CompilationUnit) parser.createAST(null);
cu.accept(new ASTVisitor() {
@Override
public boolean visit(MethodDeclaration node) {
return true;
}
@Override
public void endVisit(MethodDeclaration node) {
System.out.println("Method " + node.getName().getFullyQualifiedName() + " is visited");
}
});
}
}
:
public class HelloWorld {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
//Set the age
this.age = age;
System.out.println();
}
public static void main(String[] args) {
HelloWorld hw = new HelloWorld();
if(true) {
hw.setAge(10);
}
}
}
이 내가 위의 샘플 케이스를 분석하기 위해 작성하는 코드는 다음과 같습니다
이
구문 분석을위한 시료의 경우입니다 결과는getName()
,
setName()
,
getAge()
및
getAge()
이며,
main()
은 무시됩니다.
답변을 기다리십시오. 감사.
정말 \ n 문자를 제거합니까? 왜 이것이 유용한 기능입니까? 사실이라면 꽤 우습다. –