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

标签 java gradle sonarqube jenkins-pipeline

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

我在 Gradle spring boot 项目的根目录中有我的 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 扫描仪配置为

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

In the Jenkinsfile the stage is defined as

        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/**'

Apparently sonar.java.binaries property is causing the problem.

I have experimented with following values one by one for sonar.java.binaries property. Nothing works and every time I get the same error.

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 服务器通信并发布报告。

关于java - 使用 SonarQube Scanner 分析 java 代码时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56770370/

相关文章:

android - 由于 gradle 版本错误导致构建失败时安装 gradle wrapper

java - 如何在javadoc中写入单词 "todo"而不触发 Sonar 警报?

swift - FaSTLane "nokogiri requires Ruby version >= 2.3.0."错误

java - 旋转 JLabel 并读取旋转值

java - 在 Java 中压缩时如何维护文件夹结构?

java - 尝试在android中传递参数

android - 如何将gradle与终端同步

android - 颠簸android项目的版本号但不是每个构建

java - 如何将我的方法参数限制为仅用于 Set 和 List 类型的集合,而不是 Map?

.net - Sonar/Maven 上下文 : Gallio execution failed. 搜索原因 :?