Cancellation check in loops
Reports forEach
loops with missing cancellation checks.
Runs only within the methods with com.intellij.util.concurrency.annotations.RequiresReadLock
annotation.
Example:
for (item in items) {
ProgressManager.checkCanceled() // should be present in the first line
...
}
In case of nested loops with nothing in between:
for (item in items) {
// nothing in between
for (inner in item.inners) {
ProgressManager.checkCanceled() // should be present in the first line of the inner loop only
...
}
}
In blocking context com.intellij.openapi.progress.ProgressManager#checkCanceled
should be used, while com.intellij.openapi.progress.CoroutinesKt#checkCancelled
should be used in suspending one.
See Background Processes and ProcessCanceledException in IntelliJ Platform Plugin SDK docs for more details.
New in 2023.1
Inspection Details | |
---|---|
Available in: | IntelliJ IDEA 2023.3, Qodana for JVM 2023.3 |
Plugin: | Plugin DevKit, 233.SNAPSHOT |
Last modified: 13 July 2023