What is the correct way to set the heap size for the sonar analyze task in a devops pipeline

Hi,
My devops pipeline is ‘sometimes’ failing with an out of memory error as below.
Note that it says the memory usage is 17M/67M.

I have tried to increase it with an environment variable as follows:

        # set environment variable for sonar analysis
        - bash:              
            echo "##vso[task.setvariable variable=SONAR_SCANNNER_OPTS]-Xmx2048m" 

But this has not worked. What is the correct way to do this in a devops pipeline script?

The sonar tasks are configured as follows:


        - task: SonarCloudPrepare@1
          inputs:
            SonarCloud: 'XXXXXX'
            organization: 'YYYYYY'
            scannerMode: 'CLI'
            configMode: 'manual'
            cliProjectKey: 'ZZZZZZ'
            cliProjectName: 'FOOBAR'
            cliSources: '.'
            extraProperties: |
              sonar.cfamily.threads=4
              sonar.cfamily.cache.enabled=false
              sonar.cfamily.build-wrapper-output=bw-output
              sonar.cfamily.gcov.reportsPath=gcovReports
              sonar.sources=.
              sonar.exclusions="**/*.rb"
              sonar.cfamily.cppunit.reportsPath=cppunit
              sonar.coverageReportPaths=coverageSonar.xml
              sonar.verbose=true
        - task: SonarCloudAnalyze@1
        - task: SonarCloudPublish@1
          inputs:
            pollingTimeoutSec: '300'

The analysis seems to succeed for pull requests but not for the build of the development branch after the merge. I believe this is because we want a full analysis for ‘main’ branch and just ‘new code’ for the pull request.

2022-05-05T23:11:14.3388831Z 23:11:14.337 INFO: 966/966 source files have been analyzed
2022-05-05T23:11:14.3487301Z 23:11:14.348 INFO: ------------------------------------------------------------------------
2022-05-05T23:11:14.3488045Z 23:11:14.348 INFO: EXECUTION FAILURE
2022-05-05T23:11:14.3489235Z 23:11:14.348 INFO: ------------------------------------------------------------------------
2022-05-05T23:11:14.3493134Z 23:11:14.348 INFO: Total time: 2:09.230s
2022-05-05T23:11:14.4032203Z 23:11:14.402 INFO: Final Memory: 17M/67M
2022-05-05T23:11:14.4034287Z 23:11:14.402 INFO: ------------------------------------------------------------------------
2022-05-05T23:11:14.4076496Z ##[error]23:11:14.402 ERROR: Error during SonarScanner execution
java.lang.OutOfMemoryError: Java heap space
2022-05-05T23:11:14.4087343Z 23:11:14.402 ERROR: Error during SonarScanner execution
2022-05-05T23:11:14.4087898Z java.lang.OutOfMemoryError: Java heap space
2022-05-05T23:11:14.4159341Z ##[error]at org.sonarsource.analyzer.commons.xml.XmlFilePosition.shift(XmlFilePosition.java:83)
	at org.sonarsource.analyzer.commons.xml.XmlFilePosition.shift(XmlFilePosition.java:62)
	at org.sonarsource.analyzer.commons.xml.XmlFilePosition.moveAfterClosingBracket(XmlFilePosition.java:109)
	at org.sonarsource.analyzer.commons.xml.XmlParser.visitStartElement(XmlParser.java:196)
	at org.sonarsource.analyzer.commons.xml.XmlParser.parseXml(XmlParser.java:132)
	at org.sonarsource.analyzer.commons.xml.XmlParser.<init>(XmlParser.java:69)
	at org.sonarsource.analyzer.commons.xml.XmlFile.getNamespaceUnawareDocument(XmlFile.java:129)
	at org.sonar.plugins.xml.checks.hibernate.DatabaseSchemaUpdateCheck.scanFile(DatabaseSchemaUpdateCheck.java:38)
	at org.sonarsource.analyzer.commons.xml.checks.SonarXmlCheck.scanFile(SonarXmlCheck.java:44)
	at org.sonar.plugins.xml.XmlSensor.runCheck(XmlSensor.java:131)
	at org.sonar.plugins.xml.XmlSensor.lambda$runChecks$0(XmlSensor.java:125)
	at org.sonar.plugins.xml.XmlSensor$$Lambda$1201/0x00000008015daf28.accept(Unknown Source)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1779)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
	at org.sonar.plugins.xml.XmlSensor.runChecks(XmlSensor.java:125)
	at org.sonar.plugins.xml.XmlSensor.scanFile(XmlSensor.java:115)
	at org.sonar.plugins.xml.XmlSensor.execute(XmlSensor.java:96)
	at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:62)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:75)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:48)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor$$Lambda$1142/0x0000000801524498.run(Unknown Source)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:66)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:48)
	at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:64)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
23:11:14.412 ERROR: 
23:11:14.413 ERROR: Re-run SonarScanner using the -X switch to enable full debug logging.
2022-05-05T23:11:14.4168849Z 	at org.sonarsource.analyzer.commons.xml.XmlFilePosition.shift(XmlFilePosition.java:83)
2022-05-05T23:11:14.4169629Z 	at org.sonarsource.analyzer.commons.xml.XmlFilePosition.shift(XmlFilePosition.java:62)
2022-05-05T23:11:14.4170819Z 	at org.sonarsource.analyzer.commons.xml.XmlFilePosition.moveAfterClosingBracket(XmlFilePosition.java:109)
2022-05-05T23:11:14.4171663Z 	at org.sonarsource.analyzer.commons.xml.XmlParser.visitStartElement(XmlParser.java:196)
2022-05-05T23:11:14.4172557Z 	at org.sonarsource.analyzer.commons.xml.XmlParser.parseXml(XmlParser.java:132)
2022-05-05T23:11:14.4173262Z 	at org.sonarsource.analyzer.commons.xml.XmlParser.<init>(XmlParser.java:69)
2022-05-05T23:11:14.4174010Z 	at org.sonarsource.analyzer.commons.xml.XmlFile.getNamespaceUnawareDocument(XmlFile.java:129)
2022-05-05T23:11:14.4174862Z 	at org.sonar.plugins.xml.checks.hibernate.DatabaseSchemaUpdateCheck.scanFile(DatabaseSchemaUpdateCheck.java:38)
2022-05-05T23:11:14.4175718Z 	at org.sonarsource.analyzer.commons.xml.checks.SonarXmlCheck.scanFile(SonarXmlCheck.java:44)
2022-05-05T23:11:14.4176578Z 	at org.sonar.plugins.xml.XmlSensor.runCheck(XmlSensor.java:131)
2022-05-05T23:11:14.4177250Z 	at org.sonar.plugins.xml.XmlSensor.lambda$runChecks$0(XmlSensor.java:125)
2022-05-05T23:11:14.4177930Z 	at org.sonar.plugins.xml.XmlSensor$$Lambda$1201/0x00000008015daf28.accept(Unknown Source)
2022-05-05T23:11:14.4178656Z 	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
2022-05-05T23:11:14.4179406Z 	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2022-05-05T23:11:14.4180142Z 	at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1779)
2022-05-05T23:11:14.4180872Z 	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2022-05-05T23:11:14.4181612Z 	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2022-05-05T23:11:14.4182377Z 	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
2022-05-05T23:11:14.4183166Z 	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
2022-05-05T23:11:14.4183927Z 	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2022-05-05T23:11:14.4184648Z 	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2022-05-05T23:11:14.4185327Z 	at org.sonar.plugins.xml.XmlSensor.runChecks(XmlSensor.java:125)
2022-05-05T23:11:14.4185971Z 	at org.sonar.plugins.xml.XmlSensor.scanFile(XmlSensor.java:115)
2022-05-05T23:11:14.4186630Z 	at org.sonar.plugins.xml.XmlSensor.execute(XmlSensor.java:96)
2022-05-05T23:11:14.4187315Z 	at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:62)
2022-05-05T23:11:14.4188083Z 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:75)
2022-05-05T23:11:14.4188955Z 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:48)
2022-05-05T23:11:14.4189677Z 	at org.sonar.scanner.sensor.ModuleSensorsExecutor$$Lambda$1142/0x0000000801524498.run(Unknown Source)
2022-05-05T23:11:14.4190399Z 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:66)
2022-05-05T23:11:14.4191136Z 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:48)
2022-05-05T23:11:14.4191847Z 	at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:64)
2022-05-05T23:11:14.4192653Z 	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
2022-05-05T23:11:14.4193304Z 23:11:14.412 ERROR: 
2022-05-05T23:11:14.4194242Z 23:11:14.413 ERROR: Re-run SonarScanner using the -X switch to enable full debug logging.
2022-05-05T23:11:14.5154317Z ##[error]The process '/__w/_tasks/SonarCloudAnalyze_ce096e50-6155-4de8-8800-4221aaeed4a1/1.29.1/sonar-scanner/bin/sonar-scanner' failed with exit code 1
2022-05-05T23:11:14.5281858Z ##[section]Finishing: SonarCloudAnalyze

See also

Hey there.

You can check to see if your SONAR_SCANNER_OPTS value is being seen by the scanner by checking the beginning of the scanner logs.

INFO: SonarScanner 4.6.2.2472
INFO: Java 11.0.15 Eclipse Adoptium (64-bit)
INFO: Windows Server 2022 10.0 amd64
INFO: SONAR_SCANNER_OPTS=-Xmx2048m

At a glance, it looks like you’ve spelled SONAR_SCANNER_OPTS wrong, with 3 Ns in SCANNNER

And, for what it’s worth, I like this syntax in my Azure Pipelines a little more :slight_smile:

variables:
- name: SONAR_SCANNER_OPTS
  value: -Xmx2048m

At a glance, it looks like you’ve spelled SONAR_SCANNER_OPTS wrong, with 3 Ns in SCANNNER

Also I thought it had to be an environment variable…

Doh! :man_facepalming:

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.