UTBotCpp icon indicating copy to clipboard operation
UTBotCpp copied to clipboard

[BUG] Coverage not always shown, sometimes exception thrown

Open tyuldashev opened this issue 3 years ago • 0 comments

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:

  1. 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;
    }
}
  1. Generate tests and run them all with coverage, information generated as expected image

  2. Delete part of the code, for instance replace last part of the code with simple return sum;

  3. Re-run test generation and run with coverage - note there is no coverage info shown, also sometimes exception thrown.

image

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)

tyuldashev avatar Sep 07 '22 11:09 tyuldashev