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

使用Gradle筛选JaCoCo覆盖报告

东门仲卿
2023-03-14

我有一个与jacoco的项目,我希望能够过滤某些类和/或包。

我阅读了以下文档:

使用Sonarrunner和Gradle(不使用sonar)从Jacoco报告中排除包

Jacoco-从报表中排除JSP(它似乎适用于maven,我使用的是gradle)

Maven Jacoco配置-从不工作的报告中排除类/包(这似乎适用于Maven,我使用的是gradle)

apply plugin: 'java'
apply plugin: 'jacoco'

buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
}

repositories {
    jcenter()
}

jacocoTestReport {
    reports {
        xml {
            enabled true // coveralls plugin depends on xml format report
        }

        html {
            enabled true
        }
    }

    test {
        jacoco {
            destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
            classDumpFile = file("$buildDir/jacoco/classpathdumps")
            excludes = ["projecteuler/**"] // <-- does not work
            // excludes = ["projecteuler"]
        }
    }
}

共有1个答案

傅砚
2023-03-14

在搜索谷歌、阅读Gradle文档和查看更老的StackOverflow帖子后,我在官方Gradle论坛上找到了这个答案!

jacocoTestReport {
    afterEvaluate {
        classDirectories.setFrom(files(classDirectories.files.collect {
            fileTree(dir: it, exclude: 'com/blah/**')
        }))
    }
}

来源:https://issues.gradle.org/browse/gradle-2955

对于较旧的gradle版本,<5.x可能需要使用classdirectories.files.collect{而不是classdirectories.setfrom

apply plugin: 'java'
apply plugin: 'jacoco'

jacocoTestReport {
    reports {
        xml {
            enabled true // coveralls plugin depends on xml format report
        }

        html {
            enabled true
        }
    }

    afterEvaluate {
        classDirectories = files(classDirectories.files.collect {
            fileTree(dir: it,
                    exclude: ['codeeval/**',
                              'crackingthecode/part3knowledgebased/**',
                              '**/Chapter7ObjectOrientedDesign**',
                              '**/Chapter11Testing**',
                              '**/Chapter12SystemDesignAndMemoryLimits**',
                              'projecteuler/**'])
        })
    }
}
apply plugin: 'jacoco'

task jacocoReport(type: JacocoReport) {
    reports {
        xml {
            enabled true // coveralls plugin depends on xml format report
        }

        html {
            enabled true
        }
    }

    afterEvaluate {
        classDirectories = files(classDirectories.files.collect {
            fileTree(dir: it,
                    exclude: ['codeeval/**',
                              'crackingthecode/part3knowledgebased/**',
                              '**/Chapter7ObjectOrientedDesign**',
                              '**/Chapter11Testing**',
                              '**/Chapter12SystemDesignAndMemoryLimits**',
                              'projecteuler/**'])
        })
    }
}

来源:https://github.com/jaredsburrows/android-gradle-java-app-template/blob/master/gradle/quality.gradle#L59

 类似资料:
  • 当运行Gradle的Jacoco插件时,我在一组选定的类上得到零代码覆盖率报告。我已经确认测试这些类的所有单元测试都已成功运行。 非常有趣的是,EclEmma在Eclipse中生成了正确的代码覆盖率结果。我已经确认这两个工具使用的是相同版本的Jacoco。 我想知道这两种工具的区别是什么?我需要Gradle Jacoco插件的额外配置吗。 编辑:我的Gradle Jacoco输出显示“com类的执

  • 我们希望将Gradle与静态编程语言和Jacoco(JUnit 5)结合使用来生成代码覆盖率报告。 我们的项目目录树如下所示: < code>project/{src,test}/main/kotlin... 我们的build.gradle文件如下所示: 通过这种配置,Jacoco生成了一个html报告,并将其放在下。但是,它显示了0%的覆盖率。情况不应该是这样,因为我有一个测试用例,它为项目中的

  • 问题内容: 有谁知道如何为Java Jacoco报告配置一个gradle文件,其中包含多个gradle子模块的代码覆盖率? 我当前的方法仅显示当前子模块的代码覆盖率,而不显示兄弟子模块的代码覆盖率。 我有这个项目结构 当我执行junit-test“ Integrationtest.java”并执行代码生成报告时,该报告不包含Corelib类(如Core.java)的代码覆盖 结果应包括Ext.ja

  • https://docs.gradle.org/current/userguide/jacoco_plugin.html 并使用Gradle过滤JaCoCo覆盖报告 但没有发现任何线索 以下是gradle文件的内容 下面看我自己的答案

  • 代码覆盖率在仪表板上显示为 0% build.gradle文件 运行此命令 JacocoTestReport使用正确的代码覆盖率生成 声纳曲渐变任务生成此日志 在谷歌上搜索了半天,这个问题的唯一真正解决方案是:财产的sonar.jacoco。不推荐使用“报告路径”。请使用“声纳”jacoco。改为“报告路径” 此处的答案解释了双重输出: 但是,这似乎尚未添加到gradle插件中,因为正在使用的插件

  • 我在测试android以创建覆盖率测试报告时遇到问题。我使用./gradlew createDebugCoverageReport命令创建覆盖率报告。已创建报告,但所有测试的结果均为%0。第一个设备已植根,但第二个设备未植根。我们使用这两个设备测试勺子,并查看勺子输出。所以这两个设备一起使用。问题:当我们使用第一个设备(根设备)运行此命令时,将按预期创建所有覆盖率测试结果,但当我们同时使用两个设备