insideapp-oss / sonar-apple

SonarQube plugin for Swift / Objective-C
Other
93 stars 2 forks source link

Java Heap Issue #90

Open Alex-Giaquinto opened 3 weeks ago

Alex-Giaquinto commented 3 weeks ago

New Issue Checklist

Issue Description

Hello! So I just downloaded and installed the plugin. I keep getting this heap issue, but does not happen with any other scans or when I remove the plugin.

Command executed

Performing this via Github Action

Complete output when running sonar-scanner, including the stack trace and command used

INFO: Indexing files... INFO: Project configuration: INFO: Included sources: **/*.swift INFO: Excluded sources: **/xxx/**, **/xxx/**, **/xxx/**, **/xxx/**, **/xxx/**, **/xxx/**, **/xxx/**, **/xxx/** INFO: 813 files indexed INFO: 2493 files ignored because of inclusion/exclusion patterns INFO: 0 files ignored because of scm ignore settings INFO: Quality profile for swift: Swift INFO: Load metrics repository INFO: Load metrics repository (done) | time=43ms INFO: Sensor JaCoCo XML Report Importer [jacoco] INFO: 'sonar.coverage.jacoco.xmlReportPaths' is not defined. Using default locations: target/site/jacoco/jacoco.xml,target/site/jacoco-it/jacoco.xml,build/reports/jacoco/test/jacocoTestReport.xml INFO: No report imported, no coverage information will be imported by JaCoCo XML Report Importer INFO: Sensor JaCoCo XML Report Importer [jacoco] (done) | time=3ms INFO: Sensor Swift Sensor [sonarapple] INFO: ------------------------------------------------------------------------ INFO: EXECUTION FAILURE INFO: ------------------------------------------------------------------------ INFO: Total time: 7:22.539s INFO: Final Memory: 1934M/1984M INFO: ------------------------------------------------------------------------ ERROR: Error during SonarScanner execution java.lang.OutOfMemoryError: Java heap space at java.base/java.util.IdentityHashMap.init(IdentityHashMap.java:259) at java.base/java.util.IdentityHashMap.<init>(IdentityHashMap.java:215) at org.antlr.v4.runtime.atn.ATNSimulator.getCachedContext(ATNSimulator.java:81) at org.antlr.v4.runtime.atn.ATNConfigSet.optimizeConfigs(ATNConfigSet.java:217) at org.antlr.v4.runtime.atn.ParserATNSimulator.addDFAState(ParserATNSimulator.java:2115) at org.antlr.v4.runtime.atn.ParserATNSimulator.addDFAEdge(ParserATNSimulator.java:2064) at org.antlr.v4.runtime.atn.ParserATNSimulator.computeTargetState(ParserATNSimulator.java:597) at org.antlr.v4.runtime.atn.ParserATNSimulator.execATN(ParserATNSimulator.java:432) at org.antlr.v4.runtime.atn.ParserATNSimulator.adaptivePredict(ParserATNSimulator.java:371) at fr.insideapp.sonarqube.swift.antlr.generated.Swift5Parser.pattern(Swift5Parser.java:12781) at fr.insideapp.sonarqube.swift.antlr.generated.Swift5Parser.pattern_initializer(Swift5Parser.java:6033) at fr.insideapp.sonarqube.swift.antlr.generated.Swift5Parser.pattern_initializer_list(Swift5Parser.java:5972) at fr.insideapp.sonarqube.swift.antlr.generated.Swift5Parser.variable_declaration(Swift5Parser.java:6213) at fr.insideapp.sonarqube.swift.antlr.generated.Swift5Parser.declaration(Swift5Parser.java:5266) at fr.insideapp.sonarqube.swift.antlr.generated.Swift5Parser.class_member(Swift5Parser.java:9892) at fr.insideapp.sonarqube.swift.antlr.generated.Swift5Parser.class_members(Swift5Parser.java:9804) at fr.insideapp.sonarqube.swift.antlr.generated.Swift5Parser.class_body(Swift5Parser.java:9752) at fr.insideapp.sonarqube.swift.antlr.generated.Swift5Parser.class_declaration(Swift5Parser.java:9668) at fr.insideapp.sonarqube.swift.antlr.generated.Swift5Parser.declaration(Swift5Parser.java:5296) at fr.insideapp.sonarqube.swift.antlr.generated.Swift5Parser.statement(Swift5Parser.java:516) at fr.insideapp.sonarqube.swift.antlr.generated.Swift5Parser.statements(Swift5Parser.java:629) at fr.insideapp.sonarqube.swift.antlr.generated.Swift5Parser.top_level(Swift5Parser.java:431) at fr.insideapp.sonarqube.swift.antlr.SwiftAntlrContext.loadFromStreams(SwiftAntlrContext.java:48) at fr.insideapp.sonarqube.apple.commons.antlr.AntlrContext.loadFromFile(AntlrContext.java:38) at fr.insideapp.sonarqube.apple.commons.antlr.ParseTreeAnalyzer.analyze(ParseTreeAnalyzer.java:63) at fr.insideapp.sonarqube.swift.SwiftSensor.execute(SwiftSensor.java:65) 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.lambda$execute$1(ModuleSensorsExecutor.java:61) at org.sonar.scanner.sensor.ModuleSensorsExecutor$$Lambda$593/0x00007fdf4d7c9778.run(Unknown Source) at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:79) at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:61) ERROR: ERROR: Re-run SonarScanner using the -X switch to enable full debug logging.

Any sort of help would be extremely appreciated, spent days debugging this!

Environment

Ubuntu 22.04 Self Hosted SonarQube

gaelfoppolo commented 3 weeks ago

Hello @Alex-Giaquinto,

You can specify the SONAR_SCANNER_OPTS environment variable to increase the memory.

export SONAR_SCANNER_OPTS="-Xmx2048m"

Reference: https://docs.sonarsource.com/sonarqube/9.9/analyzing-source-code/scanners/sonarscanner/#troubleshooting

Does it solve your issue?

Alex-Giaquinto commented 3 weeks ago

Hi! @gaelfoppolo yes I have tried this and unfortunately it still does not work. I have tried messing with all of the javaOpts settings and nothing seems to get the job done. In my sonar-project.properties, I am only specifying the following.

sonar.projectKey=xxx sonar.exclusions= (a ton of them trying to minimize files being scanend) sonar.inclusions=**/*.swift

Besides that, I have no idea what to do. I run a ton of other repositories in sonarqube and never have this problem.

gaelfoppolo commented 3 weeks ago

Did you check the option is being effectively read by Sonar ? In your log you should see something like this:

02:21:57.614 INFO  SonarScanner CLI 6.0.0.4432
02:21:57.617 INFO  Java 22.0.1 Homebrew (64-bit)
02:21:57.621 INFO  Mac OS X 14.1.2 aarch64
02:21:57.622 INFO  SONAR_SCANNER_OPTS=-Xmx2048m
02:22:04.417 INFO  Communicating with SonarQube Server 9.9.4.87374

If 2048 doesn't work, you can continue to increase, with 3072, 4096, etc. With 2048 of memory, it should be enough to handle 813 files.

Alex-Giaquinto commented 3 weeks ago

@gaelfoppolo How can I check that? I do not see that on my end. Maybe because I am running mine via Github Actions?

gaelfoppolo commented 2 weeks ago

You can check that in the beginning of Sonar Scanner logs, the same ones you posted in your first message.