GrammarException: The inner part of ZeroOrMore and OneOrMore must not allow empty matches

I use SonarQube Community Edition on my own server with these versions:
Server: 6.7.6.38781
SonarJava: 5.11 (build 17289)

And the Problem arises during a maven build (sonar-maven-plugin version 3.6.0.1398)

I get the following error on almost every second run, but on different files (as far as I have seen there have been only Java-Enums affected, but 97% of all java-Files in this project are Enums, so maybe that doesn’t mean anything):

SonarQube is unable to analyze file : '/tmp/workspace/KOMPOSIT_VPS/build-allgemein/datentypen/src/main/java/de/vkb/gk/allgemein/datentypen/allgemein/Wertbasis.java'
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:191)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
	at java.lang.reflect.Method.invoke(Method.java:508)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException: SonarQube is unable to analyze file : '/tmp/workspace/KOMPOSIT_VPS/build-allgemein/datentypen/src/main/java/de/vkb/gk/allgemein/datentypen/allgemein/Wertbasis.java'
	at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute(ScannerBootstrapper.java:67)
	at org.sonarsource.scanner.maven.SonarQubeMojo.execute(SonarQubeMojo.java:104)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
	... 20 more
Caused by: org.sonar.java.AnalysisException: SonarQube is unable to analyze file : '/tmp/workspace/KOMPOSIT_VPS/build-allgemein/datentypen/src/main/java/de/vkb/gk/allgemein/datentypen/allgemein/Wertbasis.java'
	at org.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:105)
	at org.sonar.java.ast.JavaAstScanner.scan(JavaAstScanner.java:68)
	at org.sonar.java.JavaSquid.scanSources(JavaSquid.java:113)
	at org.sonar.java.JavaSquid.scan(JavaSquid.java:107)
	at org.sonar.plugins.java.JavaSquidSensor.execute(JavaSquidSensor.java:92)
	at org.sonar.scanner.sensor.SensorWrapper.analyse(SensorWrapper.java:53)
	at org.sonar.scanner.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:88)
	at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:82)
	at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:68)
	at org.sonar.scanner.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:88)
	at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:177)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:121)
	at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:291)
	at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:286)
	at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:284)
	at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:264)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:121)
	at org.sonar.scanner.task.ScanTask.execute(ScanTask.java:48)
	at org.sonar.scanner.task.TaskContainer.doAfterStart(TaskContainer.java:84)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:121)
	at org.sonar.scanner.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:121)
	at org.sonar.batch.bootstrapper.Batch.doExecuteTask(Batch.java:116)
	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:71)
	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
	at java.lang.reflect.Method.invoke(Method.java:508)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
	at com.sun.proxy.$Proxy23.execute(Unknown Source)
	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:185)
	at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:137)
	at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute(ScannerBootstrapper.java:65)
	... 23 more
Caused by: org.sonar.sslr.grammar.GrammarException: The inner part of ZeroOrMore and OneOrMore must not allow empty matches
	at org.sonar.sslr.internal.vm.Instruction$CommitVerifyInstruction.execute(Instruction.java:277)
	at org.sonar.sslr.internal.vm.Machine.execute(Machine.java:162)
	at org.sonar.sslr.internal.vm.Machine.execute(Machine.java:105)
	at org.sonar.sslr.internal.vm.Machine.parse(Machine.java:83)
	at org.sonar.sslr.parser.ParseRunner.parse(ParseRunner.java:46)
	at com.sonar.sslr.api.typed.ActionParser.parse(ActionParser.java:101)
	at com.sonar.sslr.api.typed.ActionParser.parse(ActionParser.java:97)
	at org.sonar.java.ast.parser.JavaParser.parse(JavaParser.java:55)
	at org.sonar.java.ast.parser.JavaParser.parse(JavaParser.java:32)
	at org.sonar.java.ast.JavaAstScanner.simpleScan(JavaAstScanner.java:94)
	... 58 more

Any Ideas?

I got the same exception (sonar-maven-plugin 3.7.0.1746) when running analysis on a legacy Java 1.8 codebase of about 100 k lines. However, about every 4th build went fine without errors (running on Jenkins). The error only appeared on Jenkins, not when I ran the analysis on my local machine. Jenkins was set up running an IBM-jdk implementation, while I used Open JDK locally. After switching to Open JDK for Jenkins as well, the problem has not reappeared.

1 Like

Hi @runesteinseth,

Welcome to the community! Would you mind sharing what version of the Java analyzer you encountered this with? Was it also a 5.x version? You can find the installed version number at Administration->Marketplace.

 
Thx,
Ann

Hi, I connect to SonarQube 7.6 from the “mvn … sonar:sonar” command I use for running the maven plugin. Unfortunately, I can’t figure out which Java analyzer version I use from SonarQube, maybe I lack Admin priviledges?

Hi,

Thanks for getting back to me. With SonarQube 7.6 you’re on a 5.x version of the analyzer.

As a side note, the current LTS is 7.9.2, and the current version is 8.1 (8.2 imminent). You should upgrade at your earliest convenience.

 
:smiley:
Ann

1 Like