octo-technology / sonar-objective-c

Sonar Plugin for Objective C
517 stars 208 forks source link

NoSuchMethodError: org.sonar.api.resources.Project.getPackaging() when used against sonarqube5.2 #98

Open aanjanhari opened 8 years ago

aanjanhari commented 8 years ago

When executing analysis on an iOS project after upgrading from sonar5.1 to 5.2, it is failing with below errors.

org.sonar.runner.impl.RunnerException: Unable to execute Sonar at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91) at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75) at java.security.AccessController.doPrivileged(Native Method) at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69) at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50) at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102) at org.sonar.runner.api.Runner.execute(Runner.java:100) at org.sonar.runner.Main.executeTask(Main.java:70) at org.sonar.runner.Main.execute(Main.java:59) at org.sonar.runner.Main.main(Main.java:53) Caused by: java.lang.NoSuchMethodError: org.sonar.api.resources.Project.getPackaging()Ljava/lang/String; at org.sonar.plugins.objectivec.tests.SurefireParser.insertZeroWhenNoReports(SurefireParser.java:81) at org.sonar.plugins.objectivec.tests.SurefireParser.collect(SurefireParser.java:56) at org.sonar.plugins.objectivec.tests.SurefireSensor.collect(SurefireSensor.java:82) at org.sonar.plugins.objectivec.tests.SurefireSensor.analyse(SurefireSensor.java:77) at org.sonar.batch.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:58) at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:50) at org.sonar.batch.phases.PhaseExecutor.execute(PhaseExecutor.java:98) at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:192) at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:100) at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:85) at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:258) at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:253) at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:243) at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:100) at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:85) at org.sonar.batch.bootstrap.GlobalContainer.executeAnalysis(GlobalContainer.java:153) at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:110) at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:76) at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:48) 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:497) at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87) ... 9 more

Note: After doing a little explore found out that getPackaging method is not there anymore with sonar-plugin-api-5.2.jar.

aanjanhari commented 8 years ago

I also observed that violations class is not there anymore in 5.2 That also requires fix. org.sonar.api.rules.violation

aanjanhari commented 8 years ago

@cyrilpicat Can you please put light on this issue?

gretzki commented 8 years ago

@aanjanhari The violations api was deprecated and has been removed in sonarqube api 5.2. (See https://github.com/SonarSource/sonarqube/commit/0d9baa81b9c819e1ded0e841be00ef10d4f6fc0e for details) Since this plugin still depends on the old api, it must be refactored first.

atleast commented 8 years ago

For getPackaging issue, I found the info: SONAR-2341 API: Deprecate Project.getPackaging (https://jira.sonarsource.com/browse/SONAR-2341). So the plugin should remove this API when using Sonar 2.8 and above.