Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[AI] 클로드코드 유용한 기능 (analyze, fix, explain, compact, call) 본문

AI

[AI] 클로드코드 유용한 기능 (analyze, fix, explain, compact, call)

jake-kim 2026. 4. 8. 01:41

유용한 기능

명령어 주요 목적 권장 사용 시점
/analyze 구조 파악 전략 수립 프로젝트 초기 진입, 대규모 변경
/fix 에러 해결 디버깅 빌드 에러 발생 , 버그 리포트 접수
/explain 코드 이해 학습 모르는 로직 분석 , 코드 리뷰
/compact 토큰 절약 성능 유지 대화가 너무 길어져 응답이 느려질
/call 전문 작업 위임 특정 규칙(Lint ) 준수 여부 정밀 확인

/analyze (구조 파악 및 전략 수립)

프로젝트의 전체 아키텍처를 분석하여 개선 방향을 제시

  • Swift 상황: MVC에서 MVVM으로 전환하거나, 새로운 프레임워크 도입 전 사용
  • 에이전트 액션: Target, Dependency, Folder Structure를 스캔

ex)

// 에이전트의 분석 결과 예시 (Summary)
/*
[Analysis Result]
- Project: SwiftUIMovieApp
- Architecture: Heavy View (MVC-like)
- Issues: 
  1. ContentListView.swift 내부에 네트워킹 로직이 포함됨 (150라인)
  2. 전역 싱글톤 NetworkManager 사용으로 테스트가 어려움
- Suggestion: ViewModel 도입 및 의존성 주입(DI) 패턴 적용 권장함
*/

/fix (에러 해결 및 디버깅)

빌드 에러나 런타임 크래시 로그를 바탕으로 코드를 즉시 수정함.

  • Swift 상황: SwiftUI에서 @State 변경 시 발생하는 스레드 에러나 문법 오류 발생 시 사용

ex)

// 수정 전 (에러 발생: Mutable property cannot be settled in a view)
struct ProfileView: View {
    var name: String = "Gim" // 빌드 에러 발생함
    
    var body: some View {
        Button("Change") { name = "Jong-gwon" }
    }
}

// /fix 실행 후 에이전트가 수정한 코드
struct ProfileView: View {
    @State private var name: String = "Gim" // @State 추가하여 해결함
    
    var body: some View {
        Button("Change") { name = "Jong-gwon" }
    }
}

/explain (코드 이해 및 학습)

난해한 Combine 연산자나 복잡한 동시성 제어 코드를 설명함.

  • Swift 상황: TaskGroup이나 AsyncSequence 등 복잡한 비동기 로직 분석 시 사용
// 분석 대상 코드
func fetchAllData() async throws -> [Data] {
    try await withThrowingTaskGroup(of: Data.self) { group in
        for url in urls {
            group.addTask { try await fetchData(from: url) }
        }
        return try await group.reduce(into: []) { $0.append($1) }
    }
}

/* 
[Agent Explanation]
이 코드는 'Structured Concurrency'를 사용하여 여러 URL에서 데이터를 병렬로 가져옴.
1. withThrowingTaskGroup: 에러 처리가 가능한 병렬 작업 그룹을 생성함.
2. addTask: 각 URL마다 개별 자식 태스크를 생성하여 비동기로 실행함.
3. reduce: 모든 작업이 완료될 때까지 기다렸다가 결과를 하나의 배열로 합쳐서 반환함.
*/

/compact (토큰 절약 및 성능 유지)

긴 코딩 세션 중 핵심 컨텍스트만 남기고 메모리를 정리

  • Swift 상황: 대규모 리팩토링 중 파일 10개를 넘나들며 대화가 길어졌을 때 사용

ex) 

// /compact 실행 시 내부 작동 방식
[System] 이전의 50개 대화 기록을 요약함.
[Current Context Summary]
- 현재 목표: 'NetworkModule'의 URLSession 설정을 에러 핸들링 로직과 함께 고도화 중임.
- 진행 상황: 'NetworkError.swift' 정의 완료, 'APIClient.swift' 수정 중임.
- 남은 작업: 단위 테스트(Unit Test) 작성 필요함.
(불필요한 이전 잡담 및 중복 코드 출력물 삭제 완료함)

 

/call (전문 작업 위임)

특정 규칙(Lint, Test 등)을 준수하는지 전문 에이전트에게 맡김

  • Swift 상황: SwiftLint 규칙 준수 여부나 Unit Test 케이스 생성을 전담
# bash

# 터미널 호출 예시
/call swift_test_agent "APIClient.swift 파일에 대한 성공/실패 테스트 케이스 5개 만들어줘"
// swift

// /call로 호출된 서브에이전트가 생성한 코드
final class APIClientTests: XCTestCase {
    func test_fetchData_success() async throws {
        // Mock 데이터를 활용한 성공 케이스 로직 작성함
    }
    
    func test_fetchData_invalidURL_failure() async {
        // 잘못된 URL 입력 시 에러 반환 여부 검증함
    }
}
Comments