Details
Description
First off - nice work so far on this plugin. Before we adopt sonar, we need the cxx plugin. We generally use google c++ testing framework, so I was glad to see that being used in the sample-2 project, but I found that if you have more than one test suite, then it throws the following exception error:
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Can not execute Sonar
Embedded error: Can not add twice the same measure on org.sonar.api.resources.Project@17eb767[id=891,key=bioinfo-cxx:PrimeTimeCxxTest,qualifier=TRK]: org.sonar.api.measures.Measure@1ce994b[id=<null>,metricKey=skipped_tests,metric=Metric[id=32,formula=<null>,key=skipped_tests,description=Number of skipped unit tests,type=INT,direction=-1,domain=Tests,name=Skipped unit tests,qualitative=true,userManaged=false,enabled=true,origin=JAV,worstValue=<null>,bestValue=0.0,optimizedBestValue=true,hidden=false,deleteHistoricalData=false],value=0.0,data=<null>,description=<null>,alertStatus=<null>,alertText=<null>,tendency=<null>,date=<null>,variation1=<null>,variation2=<null>,variation3=<null>,variation4=<null>,variation5=<null>,url=<null>,characteristic=<null>,personId=<null>,persistenceMode=FULL]
[INFO] ------------------------------------------------------------------------
[DEBUG] Trace
org.apache.maven.lifecycle.LifecycleExecutionException: Can not execute Sonar
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:284)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.plugin.MojoExecutionException: Can not execute Sonar
at org.codehaus.mojo.sonar.Bootstraper.executeMojo(Bootstraper.java:103)
at org.codehaus.mojo.sonar.Bootstraper.start(Bootstraper.java:79)
at org.codehaus.mojo.sonar.SonarMojo.execute(SonarMojo.java:88)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
... 17 more
Caused by: org.sonar.api.utils.SonarException: Can not add twice the same measure on org.sonar.api.resources.Project@17eb767[id=891,key=bioinfo-cxx:PrimeTimeCxxTest,qualifier=TRK]: org.sonar.api.measures.Measure@1ce994b[id=<null>,metricKey=skipped_tests,metric=Metric[id=32,formula=<null>,key=skipped_tests,description=Number of skipped unit tests,type=INT,direction=-1,domain=Tests,name=Skipped unit tests,qualitative=true,userManaged=false,enabled=true,origin=JAV,worstValue=<null>,bestValue=0.0,optimizedBestValue=true,hidden=false,deleteHistoricalData=false],value=0.0,data=<null>,description=<null>,alertStatus=<null>,alertText=<null>,tendency=<null>,date=<null>,variation1=<null>,variation2=<null>,variation3=<null>,variation4=<null>,variation5=<null>,url=<null>,characteristic=<null>,personId=<null>,persistenceMode=FULL]
at org.sonar.batch.index.Bucket.addMeasure(Bucket.java:101)
at org.sonar.batch.index.DefaultIndex.addMeasure(DefaultIndex.java:168)
at org.sonar.batch.DefaultSensorContext.saveMeasure(DefaultSensorContext.java:118)
at org.sonar.plugins.cxx.xunit.CxxXunitSensor.saveClassMeasure(CxxXunitSensor.java:211)
at org.sonar.plugins.cxx.xunit.CxxXunitSensor.parseReport(CxxXunitSensor.java:169)
at org.sonar.plugins.cxx.xunit.CxxXunitSensor.analyse(CxxXunitSensor.java:100)
at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:64)
at org.sonar.batch.phases.Phases.execute(Phases.java:93)
at org.sonar.batch.bootstrap.ProjectModule.doStart(ProjectModule.java:143)
at org.sonar.batch.bootstrap.Module.start(Module.java:83)
at org.sonar.batch.bootstrap.BatchModule.analyze(BatchModule.java:115)
at org.sonar.batch.bootstrap.BatchModule.doStart(BatchModule.java:105)
at org.sonar.batch.bootstrap.Module.start(Module.java:83)
at org.sonar.batch.bootstrap.BootstrapModule.doStart(BootstrapModule.java:102)
at org.sonar.batch.bootstrap.Module.start(Module.java:83)
at org.sonar.batch.bootstrapper.Batch.startBatch(Batch.java:71)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:58)
at org.sonar.maven.SonarMojo.execute(SonarMojo.java:151)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
at org.codehaus.mojo.sonar.Bootstraper.executeMojo(Bootstraper.java:98)
... 21 more
This is a showstopper for us. All of our projects output multiple test suites in one file (using google test). If you want a simple test case, I have attached an example (created from the sample project - but added another testsuite).