Template for a good bug report, formatted with Markdown:
Versions used (SonarQube, Scanner, Plugin, and any relevant extension)
SonarQube 8.4.1 Developer Edition, CFamily Analyzer 6.11.0 (build 19130), Java 11 on build server, Cpp
Error observed (wrap logs/code around triple quote ``` for proper formatting)
Added new unit test with a mock. This is header only and heavily based on templates.
##[error]ERROR: Error during SonarScanner execution
ERROR: Error during SonarScanner execution
##[error]java.lang.IllegalStateException: Line 105 is out of range in the file XXX.Test/XXXTest.cpp (lines: 104)
java.lang.IllegalStateException: Line 105 is out of range in the file XXX.Test/XXXTest.cpp (lines: 104)
##[error]at org.sonar.api.utils.Preconditions.checkState(Preconditions.java:61)
at org.sonar.api.utils.Preconditions.checkState(Preconditions.java:61)
##[error]at org.sonar.api.batch.sensor.coverage.internal.DefaultCoverage.validateLine(DefaultCoverage.java:93)
at org.sonar.api.batch.sensor.coverage.internal.DefaultCoverage.validateLine(DefaultCoverage.java:93)
##[error]at org.sonar.api.batch.sensor.coverage.internal.DefaultCoverage.lineHits(DefaultCoverage.java:81)
at org.sonar.api.batch.sensor.coverage.internal.DefaultCoverage.lineHits(DefaultCoverage.java:81)
##[error]at com.sonar.cpp.plugin.visualstudio.VisualStudioCoverageSensor.execute(VisualStudioCoverageSensor.java:76)
at com.sonar.cpp.plugin.visualstudio.VisualStudioCoverageSensor.execute(VisualStudioCoverageSensor.java:76)
##[error]at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:48)
at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:48)
##[error]at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:85)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:85)
##[error]at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:59)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:59)
##[error]at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:77)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:77)
##[error]at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:59)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:59)
##[error]at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:82)
at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:82)
##[error]at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
##[error]at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
##[error]at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:388)
…
##[error]22:33:29.605 Post-processing failed. Exit code: 1
22:33:29.605 Post-processing failed. Exit code: 1
##[error]The process ‘D:_2_tasks\SonarQubePrepare_15b84ca1-b62f-4a2a-a403-89b77a063157\4.17.0\classic-sonar-scanner-msbuild\SonarScanner.MSBuild.exe’ failed with exit code 1
Steps to reproduce
Unit test with a mock using FakeIt 2.0.5. Test was passing successfully.
The test file XXXTest.cpp has 104 lines.
2 methods are replaced by stubs, 12 by Fakes, about 40 are unmocked (defaulted).
Pure C++ solution (with Java Native Interface JNI methods), no C# or other languages
Analysis on master branch (before adding unit test with mock) is successful.
Potential workaround
not available yet
Scanner command used when applicable (private details masked)
And several other blocks which are out of range of line number. They come probably from the included FakeIt templates. (All together 83 lines with source_id="52")
My “workaround” was to discard MS C++ Unit Testing Framework and FakeIt for this project and switch to Google Test+Mock.
I disliked this, as all other projects and tests in the solution are using MS C++ Testing Framework and now there are two different styles to maintain But at least it works.
we cannot modify our plugin to import invalid coverage reports. Could you try to figure out what is happening? Why is the report containing some invalid line numbers?
I created a ticket to track the issue: CPP-2879. We are going to ignore entries on exceeding line numbers, it is going to be released in the next version.
I n the meanwhile I created a very simple test project (abstract class with only 2 virtual methods) and there everything is ok even with Fake. Either it is something in our solution (403k LOC) or only with more abstract methods. If I can reproduce it with a simple project I’ll report it.