使用SonarQube Scanner分析Java代码时出错

时间:2019-06-26 10:15:28

标签: java gradle sonarqube jenkins-pipeline

使用SonarQube通过Jenkins进行的Gradle Spring Boot代码分析会引发错误。

我在Gradle春季启动项目的根目录下有我的sonar-project.properties文件,其中包含以下详细信息

sonar.projectKey=some-project-key
sonar.projectName=some-project-name
sonar.projectVersion=1.0
sonar.sources=src/main/java/
sonar.exclusions=./src/main/resources/**
sonar.language=java
sonar.java.sources=1.8
sonar.java.binaries=build/classes/java/main

在Jenkins中,“全局工具配置”下的SonarQube Scanner被配置为

Name: SonarScanner
Install Automatically is checked
Install from Maven Central: SonarQube Scanner 3.0.3.778 

在Jenkinsfile中,阶段定义为

        stage('SonarQube') {
            environment {
                scannerHome = tool 'SonarScanner'
            }
            steps {
                withSonarQubeEnv('sonarqube') {
                    sh "${scannerHome}/bin/sonar-scanner"
                }
                timeout(time: 10, unit: 'MINUTES') {
                    waitForQualityGate abortPipeline: true
                }
            }
        }

运行作业时,出现以下错误

INFO: JavaClasspath initialization
ERROR: Invalid value for sonar.java.binaries
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 5.890s
INFO: Final Memory: 48M/120M
INFO: ------------------------------------------------------------------------
ERROR: Error during SonarQube Scanner execution
java.lang.IllegalStateException: No files nor directories matching 'build/classes/java/main/**'

显然是sonar.java.binaries属性引起了问题。

我已经尝试了sonar.java.binaries属性的下列值一个接一个。什么都行不通,而且每次我遇到相同的错误。

build//classes//java//main
build/classes/java/main
build/classes
*//build//classes//java//main//**
//build//classes//java//main//**
build//classes//java//main//**
build/classes/java/main/**

我已经不知所措了。如果有人可以帮助我,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

我已设法解决此问题。我必须在sonar-project.properties中定义属性值,如下所示。

sonar.java.binaries=build/libs

Jenkins的工作能够与SonarQube服务器通信并发布报告。