java - 从 Jenkins 中的 Jacoco 覆盖范围中排除包

标签 java jenkins gradle sonarqube jacoco

由于我的 Jenkins 管道失败,尝试从覆盖率报告中排除软件包。我有一个包含所有 POJO:s 的子项目。我不想为所有这些编写 uittest。因此,他们会降低分支/线路覆盖率,使覆盖率低于阈值并导致我的构建失败。

应该可以排除一些软件包,但我无法让它工作。

我有以下 jacoco.gradle 文件:

apply plugin: 'jacoco'  
apply plugin: 'java'  
jacoco {  
  toolVersion = "0.8.2"  
}  

jacocoTestReport {  
reports {  
  xml.enabled true  
  csv.enabled false  
  html.enabled true  
}  

afterEvaluate {  
  classDirectories = files(classDirectories.files.collect {  
     fileTree(dir: it, exclude: '**xxx/yyy/zzz/**')  
  })  
}  

task coverage { dependsOn 'jacocoTestReport' }  

check.dependsOn 'jacocoTestReport'  
<小时/>

我的 sonar.gradle 文件中的以下内容:

apply plugin: 'org.sonarqube'  

sonarqube {  
properties {  
  property "sonar.forceAnalysis", "true"  
  property "sonar.forceAuthentication", "true"  
  property "sonar.java.coveragePlugin", "jacoco"  
  property "sonar.login", ""  
  property "sonar.password", ""  
 }  
}  

subprojects {  
 sonarqube {  
  properties {  
     property "sonar.jacoco.reportPaths", 
 "$buildDir/reports/jacoco/allTests.exec"
     property "sonar.junit.reportsPath", "$buildDir/test-results/test"  
  }  
 }  
}  

task sonar { dependsOn 'sonarqube' }  
<小时/>

在我的 build.gradle 中:

apply from: 'gradle/sonar.gradle'  
...  
apply plugin: 'java'  
...  
subprojects {  
  apply from: '../gradle/jacoco.gradle'   
  ...  
}  
<小时/>

最后来 self 的 Jenkins 文件:

step([$class: 'JacocoPublisher', changeBuildStatus: false, 
 exclusionPattern: '**/*Test*.class', inclusionPattern: 
 '**/*.class', minimumBranchCoverage: '80', sourcePattern: '**/src'])  

try {  
 dir(BUILD_DIR) {  
 sh './gradlew sonar'  
}  
<小时/>

但是 Jenkins 的覆盖率报告中仍然生成了 xxx.yyy.zzz!

最佳答案

终于可以用了!关键是 JacocoPuplisher。

step([$class: 'JacocoPublisher', changeBuildStatus: false, exclusionPattern: 
'**/xxx/yyy/zzz/**/*.class, **/*Test*.class', inclusionPattern: '**/*.class', 
minimumBranchCoverage: '80', sourcePattern: '**/src'])

这是我让它与 Jenkins 一起工作的唯一方法。

设置 sonar.coverage.exclusion 或使用上面的 afterEvalueate 内容没有任何效果。

关于java - 从 Jenkins 中的 Jacoco 覆盖范围中排除包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53883900/

相关文章:

java - 从 Maven 调用 msbuild 时出错

java - Jenkins 可以在 slave 日志上自定义插件到 master 吗?

cloudbees 上的 jenkins 导致 android gradle 构建失败

JavaFX ToggleButton 进入和退出无限循环

Android:VerifyError:期望分支目标 15 处有堆栈图帧

maven - Gradle publishPubNamePublicationToRepoNameRepository 失败,出现 "Could not get resource [...] maven-metadata.xml"

java - -1 左移 31

java - JDialog 不显示组件

java - 如何在 WebDriver 中切换实例

java - Jenkins Junit 中的 WireMock - BindException : Address already in use