首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java模块在Jenkins中的SonarQube分析

Java模块在Jenkins中的SonarQube分析
EN

Stack Overflow用户
提问于 2015-12-25 00:36:05
回答 1查看 1.1K关注 0票数 2

我创建了一个Jenkins项目来运行我的产品代码的SonarQube分析。工作区包含多个模块(一些在Nodejs,即Javascript中),还有一些在Java中。我的声纳特性就像

代码语言:javascript
复制
sonar.projectKey=product-key
sonar.projectName=product-name
sonar.projectVersion=1.0
sonar.sources=./nodejsmodule1,./nodejsmodule2
sonar.sourceEncoding=UTF-8

这完全没有问题,并给我一个不错的SonarQube仪表板。但是,如果我将sonar.sources属性更改为:

代码语言:javascript
复制
sonar.sources=./nodejsmodule1,./nodejsmodule2,./java-module-name/src/main/java

Jenkins构建失败,出现以下错误:

代码语言:javascript
复制
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.NoSuchMethodError: org.sonar.api.resources.Project.getPom()Lorg/apache/maven/project/MavenProject;
at org.sonar.plugins.surefire.api.SurefireUtils.getReportsDirectoryFromPluginConfiguration(SurefireUtils.java:56)
at org.sonar.plugins.surefire.api.SurefireUtils.getReportsDirectory(SurefireUtils.java:39)
at org.sonar.plugins.surefire.SurefireSensor.analyse(SurefireSensor.java:63)
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:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87)
... 9 more

当我用

代码语言:javascript
复制
sonar.sources=./nodejsmodule1,./nodejsmodule2,./java-module-name/pom.xml

错误消失了。进行多语言分析。该项目的SonarQube仪表板上的events小部件显示了在分析过程中使用了。但是代码分析结果不包含任何关于Java的内容。JavaScript分析结果显示。我指定sonar.sources值的顺序并不重要(即JavaScript后面跟着Java或Java后面跟着JavaScript)。我查看了其他StackOverflow问题(例如,使用JENKINS分析Maven 3和多语言项目的声纳)。显然,它们也指定了类文件的位置。可能是在Jenkins构建SonarQube分析的步骤中编译java代码,这样它们就可以指向target/classes位置。当我尝试这个(即sonar.binaries=./java-module-name/target/classes)时,构建失败了。

基于http://docs.sonarqube.org/display/SONAR/Analyzing+with+SonarQube+Scanner+for+Maven#AnalyzingwithSonarQubeScannerforMaven-AnalyzingaMulti-languageProject,我也尝试了sonar.sources=./java-module-name/src,./java-module-name/pom.xml。但这又带来了一个例外。sonar.sources=./java-module-name,./java-module-name/pom.xmlsonar.sources=./java-module-name/src/main,./java-module-name/pom.xmlsonar.sources=./java-module-name/src/main/java,./java-module-name/pom.xml也有例外情况。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-29 15:32:16

错误仅在包含Java源代码时才会出现?因此,您可能在您的5.2中使用了一些过时的插件,这些插件是在Java中触发的,并且使用了不再可用的getPom()方法。

org.sonar.api.resources.Project.getPom()不再有Sq5.2版的版本。

见5.2中的Project.class

堆叠的痕迹指向万无一失的目标。你用的是哪个版本?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34459091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档