Sonarqube 对 Spring Boot gradle 项目的覆盖率为 0%

Posted

技术标签:

【中文标题】Sonarqube 对 Spring Boot gradle 项目的覆盖率为 0%【英文标题】:Sonarqube gives 0% coverage on spring boot gradle project 【发布时间】:2021-08-01 00:22:46 【问题描述】:

所以我正在使用 SonarQube,但我一直卡住。我的覆盖率是 0%,但它不应该是 0%(我通过一个简单的测试确保它始终应该正确运行并且至少涵盖一种方法)。

我在互联网上阅读了很多不同的 gradle.build 文件,但我找不到适合我的文件。 另外我认为问题在于 sonarqube 找不到某些文件,但我找不到可以与我自己比较的某人的工作目录。

Gradle.build

plugins 
    id 'org.springframework.boot' version '2.4.2'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id "org.sonarqube" version "3.0"
    id 'jacoco'


group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '15'

configurations 
    compileOnly 
        extendsFrom annotationProcessor
    


repositories 
    mavenCentral()



dependencies 
    compile 'org.apache.httpcomponents:httpcore:4.4.1'
    compile 'org.apache.httpcomponents:httpclient:4.5'
    implementation('io.jsonwebtoken:jjwt:0.2')
    implementation 'org.springframework.boot:spring-boot-starter-mail'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compile 'junit:junit:4.12'
    implementation 'org.modelmapper:modelmapper:2.4.1'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'mysql:mysql-connector-java'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation 'org.eclipse.jgit:org.eclipse.jgit:5.4.2.201908231537-r'
    /**
     * JUnit jupiter with mockito.
     */
    testCompile group: 'org.mockito', name: 'mockito-junit-jupiter', version: '2.19.0'

    testCompile group: 'org.mockito', name: 'mockito-core', version: '2.19.0'
    testCompile group: 'org.springframework.security', name: 'spring-security-test', version: '5.1.6.RELEASE'


sonarqube
    properties
        property 'sonarjava.source', '1.8'
        property 'sonar.java.coveragePlugin', 'jacoco'
    

test 
    useJUnitPlatform()

这是我的测试报告所在的文件夹(我想你需要这个来帮助我):

构建目录:

jacoco 测试目录

谁能帮我解决我的问题?如果您想查看目录或其他文件,只需询问并将它们添加到帖子中即可。 提前致谢!

【问题讨论】:

【参考方案1】:

你需要确保 jacoco 在 sonarqube 之前运行,所以添加如下内容:

tasks["sonarqube"].dependsOn("jacocoTestReport")

另外,请注意,compile 已弃用,因此请改用 implementationtestImplementation

【讨论】:

【参考方案2】:

答案在我没有显示的目录中。我的项目缺少 Jacocoreportxml 文件。一旦我在终端中使用 gradle build jacocoreportxml 命令添加了它,它就起作用了!

【讨论】:

这就是我下面的答案。如果你觉得是对的,请采纳:)

以上是关于Sonarqube 对 Spring Boot gradle 项目的覆盖率为 0%的主要内容,如果未能解决你的问题,请参考以下文章

spring boot打包部署

Spring Boot 3 Hibernate

Gradle + Spring Boot 无法处理超过 65535 个文件的 jar

Spring boot 日志

Spring Boot(21)——监控和管理接口

spring boot项目如何测试,如何部署