Android & Kotlin

AndroidStudio/IntelliJ IDE 에서 변수 추적이 안되는 케이스 분석

쉽코기 2025. 8. 8. 13:58

0. 개요

  • IntelliJ IDE 에서 자동 변수추적(find usage) 이 작동하지 않는 케이스를 분석하고 해결방안을 정리합니다.
  • 해당 글은 Kotlin 기반 프로젝트 이슈를 다룹니다.


1. 데이터 클래스 변수의 사용처 추적 이슈

1-1. 문제 상황

데이터 클래스의 변수를 IDE에서 추적하여 사용처를 확인하려 했으나, 실제로는 사용되고 있음에도 사용처가 표시되지 않는 문제 발생

1-2. 원인 분석

함수 파라미터의 자동 할당(named parameter)을 사용할 경우, IDE가 변수 할당 위치를 제대로 인식하지 못함

  • 인식 가능한 경우: 명시적으로 파라미터명을 표기한 경우
MainActivity.start(this, MainParams(url, someParam = isSomeParam))

 

  • 인식 불가능한 경우: 자동 할당에 의존하는 경우

 

1-3. 해결 방법

  1. 코드 작성 시: 가능한 한 파라미터명을 명시적으로 표기하여 추적 가능성 향상
  2. 사용처 검색 시:
    • IDE의 "Go to Usage" 기능으로 찾을 수 없는 경우
    • 텍스트 기반 키워드 검색(Find in Files)을 병행하여 확인

 

 

2. Interface 변수의 구현체 사용처 추적 이슈

2-1. 문제 상황

Interface에 정의된 변수를 구현체(Impl) 클래스에서 사용할 때, IDE의 "Find Usages" 기능으로 해당 사용처를 찾을 수 없는 문제 발생

 

// UserRepository.kt (Interface)
interface UserRepository {
    val userId: String
    val userName: String
    fun getUserInfo(): User
}

// UserRepositoryImpl.kt (구현체)
class UserRepositoryImpl : UserRepository {
    override val userId: String = "12345"
    override val userName: String = "John"
    
    override fun getUserInfo(): User {
        // userId를 여기서 사용하지만, 
        // Interface의 userId에서 "Find Usages"를 하면 찾아지지 않음
        return User(userId, userName)
    }
    
    fun updateUser() {
        // 구현체 내부에서 사용하는 경우도 추적 안됨
        println("Updating user: $userId")
    }
}

2-2. 해결 방법

Interface에서 찾을 때

  • Find Usages 대신 Find Implementations (Ctrl/Cmd + Alt + B) 사용