Inspectopedia 2025.3 Help

Coroutine inspections

'@Deferred' result is unused  

Reports function calls with the Deferred result type if the return value is not used.

'CoroutineContext' can contain 'Job' element   New in this release

Reports coroutine builders calls that violate structured concurrency by accepting a CoroutineContext containing a Job.

'forEach { it.join() }' call on 'Collection<Job>' instead of single 'joinAll()'  

Reports forEach { it.join() } calls on collections of Job.

'map { it.await() }' call on 'Collection<Deferred>' instead of single 'awaitAll()'  

Reports map { it.await() } calls on collections of Deferred.

'runBlocking' inside suspend function   New in this release

Reports runBlocking calls inside suspend functions.

'suspendCoroutine' lacks cancellation guarantees   New in this release

Reports usages of kotlin.coroutines.suspendCoroutine and suggests replacing them with kotlinx.coroutines.suspendCancellableCoroutine when the kotlinx.coroutines dependency is present.

Potentially ambiguous 'kotlin.coroutine.coroutineContext' usage  

Reports usages of kotlin.coroutine.coroutineContext property in code that has a dependency on kotlinx.coroutines library.

RunBlocking in coroutine  

Reports runBlocking builders that can be reached from coroutines.

Suspicious implicit 'CoroutineScope' receiver access   New in this release

Reports potentially problematic implicit CoroutineScope receiver access from within a suspending context.

Last modified: 03 November 2025