Hello,
Must-share information (formatted with Markdown):
-
which versions are you using (SonarQube Server / Community Build, Scanner, Plugin, and any relevant extension)
SonarQube Developer Edition v10.7 -
how is SonarQube deployed: zip, Docker, Helm
Docker container -
what are you trying to achieve
I am using MSBuild to build several .sln solutions in a Jenkins pipeline. The MSBuild command is launched using a build wrapper downloaded from my sonarqube instance, and this call is contained between sonar-scanner “begin” and “end” commands.
I got a warning about not using compile_commands.json:
“Property ‘sonar.cfamily.build-wrapper-output’ is deprecated; build-wrapper now generates a compilation database.
Please use the property ‘sonar.cfamily.compile-commands’ instead to specify the path of the ‘compile_commands.json’ file generated inside the build-wrapper output directory.”
- what have you tried so far to achieve this
So i replaced my sonar-scanner command arguments with /d:sonar.cfamily.compile-commands="bw-output\compile_commands.json".
In 2/3 .sln files everything is fine, but for the 3rd I get this error:
ERROR: Error during SonarScanner execution
java.util.NoSuchElementException: No value present
at java.base/java.util.Optional.orElseThrow(Unknown Source)
at com.sonar.cpp.analyzer.MsvcDriver.getIncludeFromDevCmd(MsvcDriver.java:603)
at com.sonar.cpp.analyzer.AutoScanDependencyHandler.detectMSVC(AutoScanDependencyHandler.java:151)
at com.sonar.cpp.analyzer.AutoScanDependencyHandler.loadLocalHostLibraries(AutoScanDependencyHandler.java:87)
at com.sonar.cpp.analyzer.AutoScanDependencyHandler.loadLibraries(AutoScanDependencyHandler.java:346)
at com.sonar.cpp.plugin.CFamilySensor$AutoScanUtils.getAutoScanActions(CFamilySensor.java:883)
at com.sonar.cpp.plugin.CFamilySensor$AutoScanUtils.fillAutoScanFilesToBeAnalyzed(CFamilySensor.java:830)
at com.sonar.cpp.plugin.CFamilySensor.process(CFamilySensor.java:587)
at com.sonar.cpp.plugin.CFamilySensor.processConfigurationReader(CFamilySensor.java:503)
at com.sonar.cpp.plugin.CFamilySensor.process(CFamilySensor.java:233)
at com.sonar.cpp.plugin.CFamilySensor.execute(CFamilySensor.java:183)
at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:64)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:88)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:64)
at org.sonar.scanner.scan.SpringModuleScanContainer.doAfterStart(SpringModuleScanContainer.java:82)
at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:226)
at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:205)
at org.sonar.scanner.scan.SpringProjectScanContainer.scan(SpringProjectScanContainer.java:204)
at org.sonar.scanner.scan.SpringProjectScanContainer.scanRecursively(SpringProjectScanContainer.java:200)
at org.sonar.scanner.scan.SpringProjectScanContainer.doAfterStart(SpringProjectScanContainer.java:173)
at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:226)
at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:205)
at org.sonar.scanner.bootstrap.SpringScannerContainer.doAfterStart(SpringScannerContainer.java:351)
at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:226)
at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:205)
at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart(SpringGlobalContainer.java:144)
at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:226)
at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:205)
at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:73)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
at jdk.proxy1/jdk.proxy1.$Proxy0.execute(Unknown Source)
at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
at org.sonarsource.scanner.cli.Main.execute(Main.java:126)
at org.sonarsource.scanner.cli.Main.execute(Main.java:81)
at org.sonarsource.scanner.cli.Main.main(Main.java:62)
ERROR:
The SonarScanner did not complete successfully
16:17:00.434 Post-processing failed. Exit code: 1
Here is the commands I launch, I am not very familiar with sonarqube execution and might not see an obvious issue, but I tried my best to follow documentation recommendations.
bat """\"${scannerHome}\\SonarScanner.MSBuild.exe\" begin /k:\"Backend\" /d:sonar.token=\"my_token\" /d:sonar.host.url=\"my_URL\" /d:sonar.branch.name=${sonarqubeBranchName} /d:sonar.projectBaseDir=\"C:\\work\\workspace\" /d:sonar.scm.provider=\"git\" /d:sonar.cfamily.build-wrapper-output=\"bw-output-quantum\" /d:sonar.exclusions=\"**\\unittest\\**, **\\unittests\\**, **\\test\\**, **\\Caturacy\\**, **\\*.UnitTest\\**, **\\test*.*, **\\*.build\\**, **\\*.packages\\** /d:sonar.verbose=true /d:sonar.cfamily.compile-commands=\"bw-output-guidance\\compile_commands.json\" """
bat """\".sonar\\build-wrapper-win-x86\\build-wrapper-win-x86-64.exe\" --out-dir bw-output-quantum \"${tool 'MSBuildTool'}\" build/Backend.sln /restore /p:Platform=x64 /p:Configuration=Release /m /p:BuildInParallel=true /nodeReuse:false"""
bat "\"${scannerHome}\\SonarScanner.MSBuild.exe\" end /d:sonar.token=\"my_token\""
Thank you in advence for your time and help.
Best Regards