当前位置: 首页 > 知识库问答 >
问题:

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

东方嘉佑
2023-03-14

我试图弄清楚如何从由Jenkins启动的Jacoco生成的代码覆盖率报告中排除文件夹列表。

似乎可以排除类,但不能排除文件夹,这让我很恼火,因为我已经开始使用一个相当大的在线支付系统库。运行那些单元测试意味着不断地在那个平台上创建测试帐户,并且不得不再次删除它们。詹金斯跑步的每一分钟。

并且仅仅排除文件夹比必须排除每一个类要简单得多。

共有3个答案

卓星波
2023-03-14

通过指定< code > sonar . jaco co . excludes 参数从sonar分析中排除类,如下所示:

sonar.jacoco.excludes=*/exceptions/*:*/dto/*
蒋何平
2023-03-14

如果使用pipelines和Jenkinsfile,可以使用以下设置作为示例(假设为gradle):

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

这里需要注意的是,exclusionPattern是用逗号分隔的,多个排除模式之间没有空格。

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

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;
}
狄易安
2023-03-14

要通过更改JenkinsJaCoCo插件配置来排除整个目录,您需要在“排除”字段中添加一个条目。

例如,如果您想排除任何名为“test”的目录下的任何文件,您可以添加以下排除:

**/测试/**

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

以下是我的JaCoCo插件配置:JaCoCoPlugin配置示例

 类似资料:
  • 如何排除来自jacoco code coverage,在pom中。xml还是java代码?

  • 我想以某种方式使用Jacoco,这样它就排除了。为了实现这一点,我加入了

  • 我的项目中有一个com.org.projectname.model包。我想做的是,从SonarQube覆盖范围中排除此包中的所有文件。我试过了,和,仍然没有成功。 如何解决这个问题?或者还有别的办法吗?

  • 问题内容: 有没有一种方法可以将代码排除在Cobertura覆盖率报告之外?我们提供了一些不应包含在覆盖率报告中的方法,因此不会降低覆盖率。 我知道四叶草具有这样的功能,但是我还没有为Cobertura找到任何类似的东西。 问题答案: 您可以从检测中排除类。然后它们不应出现在报告中。请参阅下面的 排除 语句。 您也可以忽略对某些方法的调用。请参阅下面的 ignore 语句。 如果您使用的是mave

  • 当我的Jenkins管道失败时,试图从覆盖报告中排除包。我有一个包含所有POJO: s的子项目。我不想为所有这些编写uittest。因此,它们会拖累覆盖范围将低于阈值的分支/线路覆盖范围,并使我的构建失败。 应该可以排除一些包,但我无法让它工作。 我有以下雅各布.gradle文件: 以下是我的声纳.gradle文件中的内容: 在我的build.gradle中: 最后从我的詹金斯文件中: 但是,xx

  • Jacoco代码覆盖率报告还包括“系统路径jar”中的类,我在maven依赖项下面添加了这些类 我试图排除这个罐子的文件从Jacoco插件像这样: 但这种排斥并不奏效。它仍在显示jar中包含的文件的覆盖率报告。如图所示,文件位于org中。阿帕克。和组织。克洛布斯。报道中不应该有包裹。