如何让Jenkins从代码覆盖中排除整个文件夹?

时间:2014-06-06 08:28:51

标签: jenkins code-coverage jacoco

我正在试图弄清楚如何从jkins推出的代码覆盖率报告中排除文件夹列表,该报告由Jenkins发布。

似乎可以排除类,但不是文件夹,这对我来说很烦人,因为我已经开始使用相当大的库来进行在线支付系统。运行这些单元测试意味着不断在该平台上创建测试帐户,并且必须再次删除它们。詹金斯的每一根叉都跑了。

只是排除文件夹比排除每一个类都要简单得多。

3 个答案:

答案 0 :(得分:4)

要通过更改Jenkins JaCoCo插件配置来排除整个目录,您需要在'排除'中添加一个条目。领域。

例如,如果要排除名为' test'的任何目录下的任何文件。您将添加以下排除项:

** /测试/ **

请记住,如果要添加多个排除项,则必须用逗号分隔每个排除项,并且不能有空格(由于插件的错误)。

这是我的JaCoCo插件配置: Example JaCoCo Plugin Configuration

答案 1 :(得分:1)

如果您正在使用管道和Jenkinsfile,您可以使用以下作为设置的示例(假设为gradle):

 stage("Check code quality and coverage") {
          steps{
           sh "./gradlew jacocoTestReport sonarqube -x check"               
           step( [$class: 'JacocoPublisher',
                  exclusionPattern: '**/*Exception*,**/*Configuration*,**/ApiApplication*,**/*Test*'] )
          }
    }

值得注意的是,exclusionPattern以逗号分隔,并且多个排除模式之间的 NO SPACES

查看潜在设置完整列表的最简单方法是查看代码:

https://github.com/jenkinsci/jacoco-plugin/blob/master/src/main/java/hudson/plugins/jacoco/JacocoPublisher.java

并查看@DataBoundSetter的

public JacocoPublisher() {
    this.execPattern = "**/**.exec";
    this.classPattern = "**/classes";
    this.sourcePattern = "**/src/main/java";
    this.inclusionPattern = "";
    this.exclusionPattern = "";
    this.skipCopyOfSrcFiles = false;
    this.minimumInstructionCoverage = "0";
    this.minimumBranchCoverage = "0";
    this.minimumComplexityCoverage = "0";
    this.minimumLineCoverage = "0";
    this.minimumMethodCoverage = "0";
    this.minimumClassCoverage = "0";
    this.maximumInstructionCoverage = "0";
    this.maximumBranchCoverage = "0";
    this.maximumComplexityCoverage = "0";
    this.maximumLineCoverage = "0";
    this.maximumMethodCoverage = "0";
    this.maximumClassCoverage = "0";
    this.changeBuildStatus = false;
    this.deltaInstructionCoverage = "0";
    this.deltaBranchCoverage = "0";
    this.deltaComplexityCoverage = "0";
    this.deltaLineCoverage = "0";
    this.deltaMethodCoverage = "0";
    this.deltaClassCoverage = "0";
    this.buildOverBuild = false;
}

答案 2 :(得分:0)

通过指定sonar.jacoco.excludes参数,从声纳分析中排除类:

sonar.jacoco.excludes=*/exceptions/*:*/dto/*