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

Error while analyzing java code using SonarQube Scanner

Gradle spring 通过 Jenkins 使用 SonarQube 的启动代码分析抛出错误。

我在 Gradle spring 引导项目的根目录下有我的声纳-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下"Global Tool Configuration" 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/**

我已经无计可施了。如果有人能帮助我,我将不胜感激。

我已经解决了这个问题。我必须在 sonar-project.properties, 属性 值中定义如下。

sonar.java.binaries=build/libs

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