지연된 컨텍스트 내에서 잠재적으로 문제가 될 수 있는 암시적 CoroutineScope 수신자 접근을 보고합니다.
중단 함수나 람다가 외부 컨텍스트에서 암시적인 CoroutineScope 수신자를 캡처할 경우, 예상치 못한 동작이 발생할 수 있습니다.
이는 중단 함수가 아직 실행 중일 때 캡처된 스코프가 취소되거나 완료될 수 있기 때문입니다.
검사는 중단 함수나 람다 내부에서 암시적으로 CoroutineScope 수신자를 사용하는 상황을 감지하여 외부 스코프에 잠재적으로 위험한 의존성을 생성할 수 있습니다.
예:
class MyClass {
fun CoroutineScope.launchJobs() {
launch { // OK: direct usage in the extension function
doSomething()
}
suspendingFunction { // Warning: Suspicious implicit 'CoroutineScope' receiver access
launch { // The launch call uses implicit CoroutineScope from the outer context
doSomethingElse()
}
}
}
}
옵션:
이 문제를 해결하려면 다음을 수행할 수 있습니다:
this@receiverLabel.method()을 사용하여 수신자를 명시적으로 지정합니다.coroutineScope { } 빌더를 사용하여 중단 함수의 생명주기에 결합된 자식 스코프를 생성합니다.