Sonarqube 对 spring 启动 gradle 项目的覆盖率为 0%
Sonarqube gives 0% coverage on spring boot gradle project
所以我在使用 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测试目录
谁能帮我解决我的问题?如果您想查看目录或其他文件,只需询问并将它们添加到 post。
提前致谢!
你需要确保 jacoco 在 sonarqube 之前运行,所以添加如下内容:
tasks["sonarqube"].dependsOn("jacocoTestReport")
此外,旁注,compile
已弃用,因此请改用 implementation
和 testImplementation
。
答案在我没有显示的目录中。我的项目缺少 Jacocoreportxml 文件。一旦我在我的终端中使用 gradle build jacocoreportxml 命令添加它,它就起作用了!
所以我在使用 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测试目录
谁能帮我解决我的问题?如果您想查看目录或其他文件,只需询问并将它们添加到 post。 提前致谢!
你需要确保 jacoco 在 sonarqube 之前运行,所以添加如下内容:
tasks["sonarqube"].dependsOn("jacocoTestReport")
此外,旁注,compile
已弃用,因此请改用 implementation
和 testImplementation
。
答案在我没有显示的目录中。我的项目缺少 Jacocoreportxml 文件。一旦我在我的终端中使用 gradle build jacocoreportxml 命令添加它,它就起作用了!