UTBotCpp
UTBotCpp copied to clipboard
[BUG] Coverage not always shown, sometimes exception thrown
That seems usually happens after code editing. Problem exists both in VSCode and CLion, but exception shown only in CLion.
To Reproduce There are no exact steps to reproduce, but this is how it usually happen:
- Use some code like below:
int summary(int a[20][50]) {
int sum = 0;
for (int i = 0; i < 20; i++) {
for (int j = 0; j < 50; j++) {
sum += a[i][j];
}
}
// replace all below with 'return sum;'
if (sum == 0) {
return 0;
} else if (sum > 0) {
return 1;
} else {
return -1;
}
}
-
Generate tests and run them all with coverage, information generated as expected

-
Delete part of the code, for instance replace last part of the code with simple
return sum; -
Re-run test generation and run with coverage - note there is no coverage info shown, also sometimes exception thrown.

Index 24 out of bounds for length 24 java.lang.ArrayIndexOutOfBoundsException: Index 24 out of bounds for length 24
at org.utbot.cpp.clion.plugin.coverage.UTBotCoverageRunner.loadCoverageData$processLinesBatch(UTBotCoverageRunner.kt:56)
at org.utbot.cpp.clion.plugin.coverage.UTBotCoverageRunner.loadCoverageData(UTBotCoverageRunner.kt:63)
at org.utbot.cpp.clion.plugin.coverage.UTBotCoverageSuite.loadProjectInfo(UTBotCoverageSuite.kt:66)
at com.intellij.coverage.BaseCoverageSuite.getCoverageData(BaseCoverageSuite.java:232)
at com.intellij.coverage.CoverageSuitesBundle.getCoverageData(CoverageSuitesBundle.java:99)
at com.intellij.coverage.CoverageEditorAnnotatorImpl.showCoverage(CoverageEditorAnnotatorImpl.java:273)
at com.intellij.coverage.CoverageDataManagerImpl$CoverageEditorFactoryListener.lambda$editorCreated$1(CoverageDataManagerImpl.java:708)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:241)
at com.intellij.util.Alarm$Request.runSafely(Alarm.java:388)
at com.intellij.util.Alarm$Request.run(Alarm.java:377)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at com.intellij.util.concurrency.SchedulingWrapper$MyScheduledFutureTask.run(SchedulingWrapper.java:223)
at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:241)
at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:31)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:214)
at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:212)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:203)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
at java.base/java.lang.Thread.run(Thread.java:833)