Skill/기반기술

자동 리팩토링 방법(IntelliJ, VSCode)

진열사랑 2025. 5. 26. 19:22

자동 리팩토링을 위해 사용할 수 있는 도구/스크립트/IDE 기능을 아래와 같이 정리해 드릴게요. RDIIAnls → RdiiAnls와 같이 이름만 바꾸되 참조된 모든 위치를 자동으로 반영하는 것이 핵심입니다.


✅ 1. IntelliJ IDEA 기준 자동 리팩토링 방법 (가장 추천🔥)

📌 클래스 이름 바꾸기

  1. 클래스에서 클래스명에 커서 올림
  2. Shift + F6 (리네임 단축키)
  3. RDIIAnls → RdiiAnls 로 입력
  4. 엔터 → 전체 참조된 곳 자동 변경됨 (필드명, 주입명, import 등)

📌 디렉터리나 파일 이름도 함께 바꾸려면

  • 파일 탐색기에서 해당 .java 파일 선택
  • Shift + F6 → 이름 변경
  • RdiiAnlsService.java 등으로 바꾸면 클래스 선언부도 자동 변경됨

📌 소문자 → 대문자 혼용 시 자동 이름 제안 비활성화 문제 해결

  • 설정 → Settings (Ctrl + Alt + S)
  • Editor > General > Smart Keys > Rename 탭에서
    Suggest all occurrences to rename 체크 ON

✅ 2. VS Code 기준 리팩토링 방법

  1. 클래스명에 커서 두기
  2. F2 키 누르기 (리네임)
  3. 이름 변경 → 엔터 → 참조된 곳 모두 수정됨

✅ 3. 대규모 자동 리팩토링 (터미널 + Bash + Gradle 기반)

📁 예: 모든 RDIIAnls → RdiiAnls로 변경 (파일/내용 포함)

# 1. 파일 이름 변경
find . -type f -name '*RDIIAnls*' -exec bash -c 'mv "$0" "${0/RDIIAnls/RdiiAnls}"' {} \;

# 2. 파일 내부 내용 일괄 치환
grep -rl 'RDIIAnls' ./ | xargs sed -i '' 's/RDIIAnls/RdiiAnls/g'

🔸 macOS 기준. Linux는 sed -i 's/.../.../g', Windows는 PowerShell로 별도 처리


✅ 4. IDE 외 리팩토링 도구 추천

도구 특징

Refactor.io 단일 파일 리팩토링 전용 웹 도구 (작은 변경에 적합)
OpenRewrite 코드 트리 기반 대규모 리팩토링 자동화, Spring 지원
jscodeshift (JS 전용) JS/TS 리팩토링 툴이지만 CLI 패턴 참고 가능
IntelliJ Structural Search & Replace (SSR) 코드 구조 패턴 기반 자동 치환 가능 (복잡한 경우 추천)

✅ 보너스: Gradle + CI 리팩토링 스크립트 자동화 예

task refactorNames(type: Exec) {
    commandLine 'bash', '-c', '''
    find ./src -type f -name '*.java' -exec sed -i '' 's/RDIIAnls/RdiiAnls/g' {} +
    '''
}

./gradlew refactorNames 하면 전체 자동 치환됩니다.


필요하시면 IntelliJ Structural Replace 예시, OpenRewrite 적용법, 또는 Windows 환경용 PowerShell 스크립트도 드릴게요.
어떤 환경에서 리팩토링하고 계신지도 알려주시면, 거기에 맞춰 더 맞춤 안내 가능합니다!