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. 해결 방법
- 코드 작성 시: 가능한 한 파라미터명을 명시적으로 표기하여 추적 가능성 향상
- 사용처 검색 시:
- 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) 사용