VinodAnandan / sonar-pitest

43 stars 30 forks source link

Sonar maven plugin failed on Pitest Sensor #34

Closed costalfy closed 4 years ago

costalfy commented 5 years ago

Hi all, I have issues when Sonar maven plugin parse Pit results on my project After a mutationCoverage goal's on pitest-maven plugin, i run a sonar analysis with mvn -e -X sonar:sonar and the build failed with this error message :

...
[DEBUG] 10:39:10.499 Found mutant Mutant [sourceFile=DomCotSoc.java, mutatedClass=b.a.gpu.cas.documents.domcotisationssociales.DomCotSoc, mutatedMethod=getAffilie, methodDescription=()Lb/a/gpu/cas/documents/domcotisationssociales/Affilie;, lineNumber=18, state=NO_COVERAGE, mutationOperator=Return Vals Mutator, killingTest=, description=mutated return of Object value for b/a/gpu/cas/documents/domcotisationssociales/DomCotSoc::getAffilie to ( if (x != null) null else throw new RuntimeException )]
[DEBUG] 10:39:10.500 collecting metrics
[DEBUG] 10:42:13.415 Enabled Languages for Pitest: [java, kotlin]
[DEBUG] 10:42:13.415 applying java rules
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] GPU :: Core ........................................ SKIPPED
[INFO] GPU :: WS .......................................... SKIPPED
[INFO] GPU :: Web ......................................... SKIPPED
[INFO] GPU ................................................ FAILURE [05:53 min]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 05:54 min
[INFO] Finished at: 2018-09-14T10:42:14+02:00
[INFO] Final Memory: 59M/1429M
[INFO] ----
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.5.0.1254:sonar (default-cli) on project GPU: 0 is not a valid line for a file -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.5.0.1254:sonar (default-cli) on project GPU: 0 is not a valid line for a file
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    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:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    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: 0 is not a valid line for a file
    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:207)
    ... 20 more
Caused by: java.lang.IllegalArgumentException: 0 is not a valid line for a file
    at org.sonar.api.internal.google.common.base.Preconditions.checkArgument(Preconditions.java:145)
    at org.sonar.api.batch.fs.internal.DefaultInputFile.checkValid(DefaultInputFile.java:308)
    at org.sonar.api.batch.fs.internal.DefaultInputFile.newPointer(DefaultInputFile.java:246)
    at org.sonar.api.batch.fs.internal.DefaultInputFile.selectLine(DefaultInputFile.java:269)
    at ch.devcon5.sonar.plugins.mutationanalysis.sensors.RulesProcessor.applyMutantRule(RulesProcessor.java:200)
    at ch.devcon5.sonar.plugins.mutationanalysis.sensors.RulesProcessor.applyRule(RulesProcessor.java:116)
    at ch.devcon5.sonar.plugins.mutationanalysis.sensors.RulesProcessor.applyRules(RulesProcessor.java:98)
    at ch.devcon5.sonar.plugins.mutationanalysis.sensors.RulesProcessor.lambda$processRules$3(RulesProcessor.java:82)
    at ch.devcon5.sonar.plugins.mutationanalysis.sensors.RulesProcessor$$Lambda$617/464551927.accept(Unknown Source)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1612)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at ch.devcon5.sonar.plugins.mutationanalysis.sensors.RulesProcessor.processRules(RulesProcessor.java:82)
    at ch.devcon5.sonar.plugins.mutationanalysis.sensors.PitestSensor.lambda$execute$1(PitestSensor.java:148)
    at ch.devcon5.sonar.plugins.mutationanalysis.sensors.PitestSensor$$Lambda$615/1275156268.accept(Unknown Source)
    at java.util.ArrayList.forEach(ArrayList.java:1249)
    at ch.devcon5.sonar.plugins.mutationanalysis.sensors.PitestSensor.execute(PitestSensor.java:146)
    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:180)
    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:302)
    at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:297)
    at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:295)
    at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:271)
    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:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    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:171)
    at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:128)
    at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute(ScannerBootstrapper.java:65)
    ... 23 more
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :GPU

here is the full log in debug mode sonar.zip

If i disable pitest-maven in my parent pom, the sonar analysis works fine and the build return SUCCESS.

I don't know if it's a mistake with pitest-maven v1.4.2, sonar-maven-plugin v3.5.0.1254 or my sonar server v7.1 (with Mutation Analysis plugin v1.3)

I work with maven 3.5.4 and openjdk8b181

thanks for your help

damorosodaragona commented 4 years ago

did u fix it? i have the same problem

costalfy commented 4 years ago

did u fix it? i have the same problem

Yes, I uninstall this plugin and install this one https://www.devcon5.ch/en/products_and_services/products/sonarqube-mutation-plugin/ Now, i use the latest pitest-maven-plugin and sonar-maven-plugin with openjdk8. After, a mvn verify, i run a mvn sonar:sonar and all the pitest analysis are published to sonarqube like this image