목록 보기
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 소스 제공 방식 검토

다음 읽기

#Lombok 주제를 다룬 다른 회사 글

java 코드는 어떻게 자동으로 만들어질까(2/2)

Lombok이 AST를 수정해 getter를 class 파일에 반영하는 과정을 설명했습니다. ASM 기반 바이트코드 조작과 Spring AOP·JaCoCo 활용 사례를 소개합니다.

야놀자클라우드
야놀자클라우드
백엔드
전체 보기

댓글 0개

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

댓글을 불러오는 중...