【发布时间】:2015-09-28 12:43:10
【问题描述】:
在对 java 项目运行分析时遇到空指针异常。
仅当我在质量配置文件中激活某些规则时才会发生触发分析失败的情况。特别是,任何具有您可以覆盖的参数的规则都会导致空指针失败。无论我是否提供覆盖值或参数是否保留默认值,它都会失败。
我应该注意,如果在质量配置文件中停用了这些特定规则,我可以完成成功分析。它似乎只与某些有参数的规则有关。
我可以使用 sonar-runner 和 org.sonarqube gradle 插件 (v 1.0) 复制此 Nullpointer 故障。所以我怀疑这不是跑步者或插件的问题,而是 SonarQube 服务器和/或数据库的某种设置问题。
问题是,我不知道如何进入并解决此问题。 SonarQube 数据库没有记录(我知道)我怀疑数据库中可能缺少某些东西,但我什至不确定它们可能在哪里。
对我可能在哪里寻找的任何建议?
版本:
SonarQube 4.5.2
SonarQube Runner 2.4
Java 1.8.0_40 甲骨文公司(64 位)
Mac OS X 10.10.4 x86_64
这是错误的堆栈跟踪:
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 1:43.316s
Final Memory: 27M/635M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
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.NullPointerException
at org.sonar.api.batch.rule.Checks.getField(Checks.java:180)
at org.sonar.api.batch.rule.Checks.configureFields(Checks.java:167)
at org.sonar.api.batch.rule.Checks.instantiate(Checks.java:152)
at org.sonar.api.batch.rule.Checks.addAnnotatedChecks(Checks.java:127)
at org.sonar.java.SonarComponents.registerTestCheckClasses(SonarComponents.java:128)
at org.sonar.plugins.java.JavaSquidSensor.analyse(JavaSquidSensor.java:82)
at org.sonar.batch.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:79)
at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:70)
at org.sonar.batch.phases.PhaseExecutor.execute(PhaseExecutor.java:119)
at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:194)
at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:93)
at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:78)
at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:233)
at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:228)
at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:221)
at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:93)
at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:78)
at org.sonar.batch.scan.ScanTask.scan(ScanTask.java:64)
at org.sonar.batch.scan.ScanTask.execute(ScanTask.java:51)
at org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.java:125)
at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:93)
at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:78)
at org.sonar.batch.bootstrap.BootstrapContainer.executeTask(BootstrapContainer.java:173)
at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:95)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
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
【问题讨论】:
-
从错误来看,很可能是插件的问题。你安装了哪些插件。哪个是与您激活以重现错误的规则相关的规则?
-
这听起来像是 java 插件中的问题。您能告诉我们您使用的是哪个版本的 java 插件吗?您可以尝试使用最新版本(3.4)吗?
-
感谢您的回复,这里是已安装的插件:[Java [java] 3.3 SonarQube 规则引擎] [Checkstyle [checkstyle] 2.3] [Clover [clover] 3.0] [Cobertura [cobertura] 1.6。 3] [Findbugs [findbugs] 3.2] [Java [java] 3.3] [JIRA [jira] 1.2] [LDAP [ldap] 1.4] [PMD [pmd] 2.3]
-
一些触发失败的规则示例是[“switch”语句不应该有太多“case”子句(默认值30)]或[类不应该太复杂(默认值200) )]。我将尝试您建议的最新版本。
-
升级 Java 插件并不能解决问题,但降级可以。这绝对是插件版本的问题。感谢您的帮助!
标签: sonarqube sonar-runner sonarqube-4.5