quarkus: Quarkus JaCoCo - Generated jacoco.xml is not parseable anymore by the sonar-maven-plugin

Describe the bug

Since Quarkus-3.6.0, the generated jacoco.xml is not “Parseable” by the sonar-maven-plugin. Below is the StackTrace:

Error: Coverage report '/__w/<GITHUB-WORKSPACE>/<GIT-REPO>/target/jacoco-report/jacoco.xml' could not be read/imported. Error: {} java.lang.IllegalStateException: Failed to parse JaCoCo XML report: /__w/<GITHUB-WORKSPACE>/<GIT-REPO>/target/jacoco-report/jacoco.xml at org.snar.plugins.jacoco.XmlReportParser.parse(XmlReportParser.java:108) at org.sonar.plugins.jacoco.JacocoSensor.importReport(JacocoSensor.java:72) at org.sonar.plugins.jacoco.JacocoSensor.importReports(JacocoSensor.java:64) at org.sonar.plugins.jacoco.JacocoSensor.execute(JacocoSensor.java:55) 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.withModuleStrategy(ModuleSensorsExecutor.java:79) at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:61) at org.sonar.scanner.scan.SpringModuleScanContainer.doAfterStart(SpringModuleScanContainer.java:82) at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188) at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167) at org.sonar.scanner.scan.SpringProjectScanContainer.scan(SpringProjectScanContainer.java:403) at org.sonar.scanner.scan.SpringProjectScanContainer.scanRecursively(SpringProjectScanContainer.java:399) at org.sonar.scanner.scan.SpringProjectScanContainer.doAfterStart(SpringProjectScanContainer.java:368) at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188) at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167) at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart(SpringGlobalContainer.java:137) at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:188) at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:167) at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72) at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:66) 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(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60) at jdk.proxy4/jdk.proxy4.$Proxy27.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.maven.bootstrap.ScannerBootstrapper.execute(ScannerBootstrapper.java:64) at org.sonarsource.scanner.maven.SonarQubeMojo.execute(SonarQubeMojo.java:108) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:1***) at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:328) at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:316) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:174) at org.apache.maven.lifecycle.internal.MojoExecutor.access$000(MojoExecutor.java:75) at org.apache.maven.lifecycle.internal.MojoExecutor$1.run(MojoExecutor.java:162) at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute(DefaultMojosExecutionStrategy.java:39) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:159) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:105) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:73) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:53) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:***8) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:***1) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:173) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:101) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:906) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:283) at org.apache.maven.cli.MavenCli.main(MavenCli.java:206) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347) Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,8202] Message: Element type "counter" must be followed by either attribute specifications, ">" or "/>". at java.xml/com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:652) at org.sonar.plugins.jacoco.XmlReportParser.parse(XmlReportParser.java:61) ... 59 common frames omitted

Expected behavior

The generated jacoco.xml should be “Parseable” by the sonar-plugin for publishing the report.

Actual behavior

Since Quarkus-3.6.0, the generated jacoco.xml is not “Parseable” by the sonar-maven-plugin.

How to Reproduce?

Reproducer:

Steps to reproduce the bug:

  1. Create a single module maven project with some basic tests
  2. Configure “org.sonarsource.scanner.maven:sonar-maven-plugin” to the latest version: 3.10.0.2594
  3. Configure quarkus-jacoco as per the Quarkus documentation here: https://quarkus.io/guides/tests-with-coverage
  4. Run the “mvn clean install && mvn sonar:sonar” commands

Output of uname -a or ver

No response

Output of java -version

17

Quarkus version or git rev

3.6.0

Build tool (ie. output of mvnw --version or gradlew --version)

maven 3.8.1

Additional information

Sonar maven plugin ( org.sonarsource.scanner.maven:sonar-maven-plugin) version: 3.10.0.2594

About this issue

  • Original URL
  • State: closed
  • Created 7 months ago
  • Reactions: 1
  • Comments: 15 (6 by maintainers)

Most upvoted comments

3.6.2 should be available on Wednesday, maybe even already tomorrow evening. But that’s all up to @gsmet!

I just tested that and it’s working. Thank you for the fix! 😃

@famod I confirm the problem is fixed in the version 3.6.3