목록 보기
린트 적용으로 코드 대량 변경 시 AST를 이용해 검증하기
백엔드

린트 적용으로 코드 대량 변경 시 AST를 이용해 검증하기

라인
라인
2024년 2월 23일

두줄요약

ktlint 업데이트로 대량 변경이 발생했을 때 AST 비교로 실제 동작 코드 변화만 검증하는 방법을 소개했습니다. 자동 포매팅의 오동작을 선별해 리뷰와 검증 비용을 크게 줄였습니다.

문제 상황

  • ktlint 버전 업데이트로 기존 코드에 새 규칙이 대량 적용되며 예상치 못한 오류와 대규모 변경 발생
  • 자동 포매터가 코드의 표현만 바꿔야 하는데 기본 인자 누락 같은 오동작 가능성 존재

원인 분석

  • 린트 규칙 강화로 기존 코드가 일괄적으로 위반 상태로 판정
  • 공백, 주석, 어노테이션처럼 실행에 직접 영향 없는 요소와 실제 동작 코드가 섞여 검증 난이도 상승

해결 방법

  • kotlin-compiler-embeddable로 PSI/AST를 생성하고 의미 없는 노드를 제외한 뒤 전후 트리를 비교
  • 파일별 변경 내용을 zip 비교해 AST가 달라진 경우만 추출하고, 실제 동작 코드 변경 여부를 검증

주의할 점

  • 불필요한 괄호처럼 포매터가 구조를 바꿀 수 있는 요소는 사전 정리 필요
  • 주석 처리된 코드가 실제 구문으로 바뀌는 사례처럼 단순 텍스트 diff만으로는 검출 한계 존재

적용해볼 점

  • 대량 린트 적용 전후에 AST 기반 검증 절차를 두어 안전성 확보
  • 자동 수정 결과를 전수 수동 검토하지 않고, 의심 변경만 선별해 리뷰 효율 개선

다음 읽기

#Android 주제를 이어서 읽기

AI 에이전트를 위한 Android CLI: 대규모 모바일 개발 환경에 적용하기

대규모 Android 저장소에서 AI 에이전트의 토큰 낭비를 줄이기 위해 Android CLI 래퍼와 스킬을 설계한 사례를 소개했습니다. 문서 검색, IDE 연동, 프리뷰 렌더링을 정규화하고 오류를 간결하게 바꿔 안정성을 높였습니다.

라인
라인
AI

댓글 0개

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

댓글을 불러오는 중...