목록 보기
JavaParser
백엔드

JavaParser

넥스트리
넥스트리
2023년 7월 6일

두줄요약

JavaParser로 자바 소스를 AST로 파싱하고 Visitor, SymbolSolver로 정적 분석에 활용하는 방법을 정리했습니다. 멀티 프로젝트와 Lombok 환경에서의 한계와 우회 방법도 함께 소개했습니다.

핵심 내용

  • JavaParser를 사용해 자바 소스를 AST로 파싱하고, 주석 수집·Visitor 기반 노드 탐색·SymbolSolver 기반 시그니처 추론·코드 생성까지 활용하는 흐름 정리
  • 정적 분석에서 메소드 호출 관계 추출, 깊이/영향도/인지적 복잡도 분석, DTO 필드 정리 같은 활용 가능성 제시
  • pretty printing과 lexical preserving printing 차이, TypeSolver 종류와 사용 범위 설명

주의할 점

  • SymbolSolver는 멀티 프로젝트 구조에서 타 프로젝트 소스만으로는 한계가 있어 JarTypeSolver와 Fat-JAR 구성이 필요
  • Lombok getter/setter 같은 컴파일 시 생성 메소드는 JavaParserTypeSolver만으로 추론 어려움
  • 분석 대상과 외부 의존성의 타입 정보 제공 방식에 따라 추론 가능 범위가 달라짐

적용해볼 점

  • 소스 분석 자동화가 필요한 경우 Visitor와 SymbolSolver 조합 검토
  • 외부 모듈이 많은 환경에서는 분석용 통합 JAR 준비 고려
  • Lombok 사용 프로젝트는 delombok 소스 제공 방식 검토

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...