首页 > 解决方案 > 发布报告时声纳空指针错误

问题描述

在 Jenkins 中运行分析时出现此错误:

22:36:58.682 INFO: ------------------------------------------------------------------------
22:36:58.682 INFO: EXECUTION FAILURE
22:36:58.682 INFO: ------------------------------------------------------------------------
22:36:58.682 INFO: Total time: 2:18.929s
22:36:58.915 INFO: Final Memory: 44M/445M
22:36:58.915 INFO: ------------------------------------------------------------------------
22:36:58.915 ERROR: Error during SonarQube Scanner execution
java.lang.NullPointerException
    at org.sonar.scanner.report.ComponentsPublisher.convert(ComponentsPublisher.java:104)
    at org.sonar.scanner.report.ComponentsPublisher.publish(ComponentsPublisher.java:69)
    at org.sonar.scanner.report.ReportPublisher.generateReportFile(ReportPublisher.java:152)
    at org.sonar.scanner.report.ReportPublisher.execute(ReportPublisher.java:138)
    at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:366)
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
    at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:141)
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
    at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:73)
    at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
    at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
    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:498)
    at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
    at com.sun.proxy.$Proxy0.execute(Unknown Source)
    at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:185)
    at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:137)
    at org.sonarsource.scanner.cli.Main.execute(Main.java:111)
    at org.sonarsource.scanner.cli.Main.execute(Main.java:75)
    at org.sonarsource.scanner.cli.Main.main(Main.java:61)

SonarQube 服务器版本是版本 7.9.1(内部版本 27448)(企业版)。Jenkins 中的 SonarScanner 是 3.3.0.1492 版本。相关的管道执行参数如下:

withSonarQubeEnv('GDMSonarEnterprise') {
                                    sh "${scannerHome}/bin/sonar-scanner"+
                                    " -X -Dsonar.projectBaseDir="+parent+
                                    " -Dsonar.projectKey="+key_sonar+
                                    " -Dsonar.projectName="+name+
                                    " -Dsonar.branch.name=master"+
                                    " -Dsonar.projectVersion="+currentVersion.format("dd-MM-yyyy-HH:mm", TimeZone.getTimeZone('UTC'))+
                                    " -Dsonar.java.coveragePlugin=jacoco"+
                                    " -Dsonar.scm.disabled=false"+
                                    " -Dsonar.modules="+modules+
                                    " -Dsonar.verbose=true"+
                                    " -Dsonar.login=somelogin"+
                                    " -Dsonar.password=somepassword"+
                                    " -Dsonar.svn.username=somelogin"+
                                    " -Dsonar.svn.password.secured=somepassword"+
                                    " -Dsonar.sources=src/main"+
                                    " -Dsonar.exclusions=**/*.scss,**/*.xml,**/*.php,**/*.js,**/*.css,**/*.jsv,**/*.html,**/*.zul,**/Q*.java,**/*Test.java,**/*Test*.java,**/*.xsd,**/*.sql"+
                                    " -Dsonar.lang.patterns.tsql=**/*.tsql"+
                                    " -Dsonar.java.binaries=target"+
                                    " -Dsonar.tests=src/test"
                                    }
                                }

我已经尝试过使用和不使用 -Dsonar.login 和 -Dsonar.password 参数,因为我有一个服务器令牌(在另一个 Jenkins Job 中,整个操作都很顺利)。

查看错误日志,它似乎处于执行的发布阶段。作为记录,之前的 Maven 构建阶段执行正确。

任何帮助表示赞赏,如果需要更多信息,我会尽力提供。

干杯。

标签: jenkinssonarqubesonarqube-scan

解决方案


检查令牌/用户在项目设置 -> 权限中是否具有“执行分析”权限。

我遇到了同样的异常,最终在尝试切换到 sonar-scanner 命令后发现了问题所在,该命令实际上提供了有用的错误消息。


推荐阅读