피드로 돌아가기
Fighting Psalm’s Internal Architecture (And Losing)
Dev.toDev.to
Backend

Psalm의 과도한 Indexing 오버헤드를 AST 기반 추상화로 해결

Fighting Psalm’s Internal Architecture (And Losing)

Nmeri Alphonsus2026년 6월 18일3advanced

Context

PHP 자동 문서화 생성기 구축을 위해 정적 분석 도구인 Psalm을 도입했으나, 단일 메서드 분석 시 전체 Codebase를 Indexing 하는 구조적 결함으로 인한 Memory Explosion 발생. 내부 Namespace의 강한 의존성과 Final Class 제약으로 인해 라이브러리 수준의 커스터마이징이 불가능한 상황 직면.

Technical Solution

  • Psalm의 불투명한 내부 API 의존성을 제거하기 위한 아키텍처 피벗 수행
  • phpParser를 도입하여 소스 코드를 Abstract Syntax Tree(AST) 형태로 직접 분석하는 구조로 전환
  • LLM을 활용하여 분석 흐름을 정의하고 AST 기반의 정밀한 타입 추출 로직 설계
  • 라이브러리 내부 상태에 의존하는 방식에서 독립적인 구문 분석 방식으로 설계를 변경하여 시스템 안정성 확보
  • 특정 메서드의 Return Value만 타겟팅하여 스캔하는 최적화 경로 구현

- 외부 라이브러리의 내부 API가 Document되지 않았고 Final Class로 캡슐화된 경우, 래핑보다는 AST 기반의 직접 분석 검토 - 특정 범위 분석이 필요한 기능에서 전체 Indexing을 강제하는 도구의 Overhead 리스크 사전 검증 - 복잡한 레거시 라이브러리 분석 시 LLM을 활용한 Flow 매핑 및 추상화 계층 설계 적용

원문 읽기