2025-11-07

1일 1아티클

ITWORLD

OpenRewrite

배경

  • 규모가 큰 기업은 수천 가지의 애플리케이션, 수십억의 코드 라인 사용
  • 오래된 API, 일관성 없는 규칙, 배포 및 보안 취약점 발생
  • 수동 리팩토링 → 확장성 X

OpenRewrite

  • 오픈소스 자동 리팩토링 프레임워크
  • 무손실 시맨틱 트리 (LST) : 정확하고 풍부한 소스 코드 데이터 표현
  • 레시피 : 변환 수행하는 모듈형 결정론적 프로그램

LST(Loseless Semantic Tree)

  • 기존의 자동 리팩토링 툴은 텍스트 패턴 or AST(추상 구문 트리) 기반
  • AST : 컴파일러의 중추 역할이나, 현대화에는 부적합
    • 코드가 무엇을 말하는지 설명 but 그 말의 의미 설명 X
    • 컨텍스트 결함 및 서식 손상, 코드 실제 의미에 대한 잘못된 추론 문제 발생
  • LST : 중요한 모든 요소 보존 및 의미 이해 추가로 문제 해결
    • 주석 및 서식, 들여쓰기, 공백 모두 유지
    • 메서드 오버로드, 제네릭, 상속, 모듈 간 종속성 전체에서 타입 확인
    • 오탐지 X

레시피

  • LST 탐색 중 패턴 탐지 및 변환 적용 프로그램 (LST 질의 언어)

레시피 특징

  1. 결정론적
    • 동일 입력 = 동일 출력
  2. 반복 가능
    • 레포지토리 개수 상관 없이 모두 적용
  3. 조합 가능
    • 작은 여러 개의 레시피를 큰 플레이북으로 조합
  4. 감사 가능
    • 버전 관리, 테스트, 검토
  5. 멱등성
    • 실행의 횟수와 관계없이 결과 동일
  6. 검증
    • 오픈소스 커뮤니티에 의한 수시 검증

OpenRewrite 레시피 구조

  1. 선언적 레시피
    • YAML 구성
  2. 명령형 레시피
    • Java 프로그램 작성 가능
    • 실행 시 방문자 패턴 사용

오늘 배운 것

  1. 정보처리기사 기출문제 풀이
  2. DB 관통 프로젝트

내일 할 일

  1. 정보처리기사 실기

참고자료

results matching ""

    No results matching ""