2025-11-07
1일 1아티클
ITWORLD
OpenRewrite
배경
- 규모가 큰 기업은 수천 가지의 애플리케이션, 수십억의 코드 라인 사용
- 오래된 API, 일관성 없는 규칙, 배포 및 보안 취약점 발생
- 수동 리팩토링 → 확장성 X
OpenRewrite
- 오픈소스 자동 리팩토링 프레임워크
- 무손실 시맨틱 트리 (
LST) : 정확하고 풍부한 소스 코드 데이터 표현 - 레시피 : 변환 수행하는 모듈형 결정론적 프로그램
LST(Loseless Semantic Tree)
- 기존의 자동 리팩토링 툴은 텍스트 패턴 or AST(추상 구문 트리) 기반
- AST : 컴파일러의 중추 역할이나, 현대화에는 부적합
- 코드가 무엇을 말하는지 설명 but 그 말의 의미 설명 X
- 컨텍스트 결함 및 서식 손상, 코드 실제 의미에 대한 잘못된 추론 문제 발생
- LST : 중요한 모든 요소 보존 및 의미 이해 추가로 문제 해결
- 주석 및 서식, 들여쓰기, 공백 모두 유지
- 메서드 오버로드, 제네릭, 상속, 모듈 간 종속성 전체에서 타입 확인
- 오탐지 X
레시피
- LST 탐색 중 패턴 탐지 및 변환 적용 프로그램 (LST 질의 언어)
레시피 특징
- 결정론적
- 동일 입력 = 동일 출력
- 반복 가능
- 레포지토리 개수 상관 없이 모두 적용
- 조합 가능
- 작은 여러 개의 레시피를 큰 플레이북으로 조합
- 감사 가능
- 버전 관리, 테스트, 검토
- 멱등성
- 실행의 횟수와 관계없이 결과 동일
- 검증
- 오픈소스 커뮤니티에 의한 수시 검증
OpenRewrite 레시피 구조
- 선언적 레시피
- YAML 구성
- 명령형 레시피
- Java 프로그램 작성 가능
- 실행 시 방문자 패턴 사용
오늘 배운 것
- 정보처리기사 기출문제 풀이
- DB 관통 프로젝트
내일 할 일
- 정보처리기사 실기