当前位置: 首页 > 知识库问答 >
问题:

Jenkins中Java模块的SonarQube分析失败

柳均
2023-03-14

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

sonar.projectKey=product-key
sonar.projectName=product-name
sonar.projectVersion=1.0
sonar.sources=./nodejsmodule1,./nodejsmodule2
sonar.sourceEncoding=UTF-8

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

sonar.sources=./nodejsmodule1,./nodejsmodule2,./java-module-name/src/main/java

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

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

当我使用

sonar.sources=./nodejsmodule1,./nodejsmodule2,./java-module-name/pom.xml

错误消失了。进行多语言分析。该项目SonarQube仪表板上的事件小部件显示在分析过程中使用了Java和JavaScript概要文件。但是代码分析结果不包含任何关于Java的内容。将显示JavaScript分析结果。我指定声纳的顺序无关紧要。源值(即JavaScript后跟Java或Java后跟JavaScript)。我研究了其他StackOverflow问题(例如,Sonar分析Maven 3和使用JENKINS的多语言项目)。显然,它们也在指定类文件的位置。也许java代码是在Jenkins构建步骤中为SonarQube分析html" target="_blank">html" target="_blank">编译的,这样他们就可以指向目标/类的位置。当我尝试此操作时(即sonar.binaries=/java模块名称/目标/类),构建失败。

基于http://docs.sonarqube.org/display/SONAR/Analyzing使用SonarQube Scanner for Maven#AnalyzingWithSonarqubescanPerformAven AnalyzingMulti languageProject,我还尝试了声纳。来源=/java模块名称/src/java模块名称/pom。xml。但这又带来了一个例外。声纳也有例外。来源=/java模块名称/java模块名称/pom。xml,声纳。来源=/java模块名/src/main/java模块名称/pom。xml和声纳。来源=/java模块名/src/main/java/java模块名称/pom。xml。

我做错了什么?

共有1个答案

慕胡媚
2023-03-14

只有在包含Java源代码时才会显示错误?因此,您可能在5.2上使用了一些过时的插件,这些插件是在Java分析中触发的,并且使用了不再可用的方法。

<代码>组织。声纳。应用程序编程接口。资源。项目SQ 5.2中不再提供getPom()。

请参见项目。5.2类

stacktrace指向surefire。您使用的是哪个版本?

 类似资料:
  • 我有一个C#多模块项目,我想运行SonarQube分析。这个项目是通过聚合器pom文件使用Maven构建的。声纳分析工作正常,模块被找到,声纳分析完成。然而,我没有看到任何违反StyleCop的行为。举个例子 如果我在不同的Jenkins作业中单独运行每个模块,我会看到所有的违规行为,包括StyleCop违规行为,所以当我使用聚合器pom时,问题就来了。我在SonarQube中使用以下插件 C#3

  • 我已在Jenkins中安装了Sonarqube插件,并在Manage Jenkins中为SonarQube和sonar运行器完成了配置-

  • 我试图在Jenkins构建中为.NET项目获得FxCop分析(调用独立的SonarQube分析)。 配置如下所示: Sonarqube 5.1.2 C#4.2 声纳-转轮2.4 Jenkins:SonarQube插件2.2.1 有没有什么方法可以让FxCop使用Jenkins插件和sonar-runner工作而不设置sonar.cs.FxCop.Assembly属性?

  • 问题内容: 我有一个git repo,其中有一个子模块。两者都属于BitBucket上的团队。我的jenkins机器是带有git插件的AWS Windows服务器。我正在使用SSH密钥进行身份验证。我有三个詹金斯工作。一个克隆主仓库。这是成功的。一个将自己克隆第二个存储库(该存储库将用作子模块)。这也是成功的。在我的第三个构建工作中,我告诉jenkins递归更新子模块。这将失败并显示公钥错误。如果

  • 收集静态分析结果时,我在Jenkins从属节点上的作业失败。 相同的作业在Jenkins主节点上运行良好。我尝试使用ssh凭据或通过“执行命令”连接Jenkins,结果相同。 主服务器和从服务器使用相同的Java版本:OpenJDK Zulu 8.20.0.5-linux64。 我试图清理Maven repo、. jenkins/缓存和slave.jar-没有帮助。slave.jar是正确的文件,