添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

从jacoco报告中排除databinding软件包

3 人关注

在我的jacoco报告中,我看到一些奇怪的数据绑定包。

我试着在我的build.gradle中加入以下内容来排除它。

    testOptions {
        unitTests.all {
            jacoco {
                includeNoLocationClasses = true
                afterEvaluate {
                    classDirectories.setFrom(files(classDirectories.files.collect {
                        fileTree(dir: it, exclude: '**/*databinding/**/*.*')
                classDirectories = fileTree(
                        dir: "${project.buildDir}",
                        excludes: ['**/*databinding/**/*.*']

似乎它们不起作用。是否有办法从我的报告中删除这个包/文件夹?

android
gradle
android-gradle-plugin
jacoco
Mikhail
Mikhail
发布于 2021-10-18
2 个回答
Vamsi
Vamsi
发布于 2021-11-24
0 人赞同

你可以定义更多的文件过滤器

def fileFilter = [
                        // data binding
                        'android/databinding/**/*.class',
                        '**/android/databinding/*Binding.class',
                        '**/android/databinding/*',
                        '**/androidx/databinding/*',
                        '**/BR.*',
                        // android
                        '**/R.class',
                        '**/R$*.class',
                        '**/BuildConfig.*',
                        '**/Manifest*.*',
                        '**/*Test*.*',
                        'android/**/*.*',
                        // kotlin
                        '**/*MapperImpl*.*',
                        '**/*$ViewInjector*.*',
                        '**/*$ViewBinder*.*',
                        '**/BuildConfig.*',
                        '**/*Component*.*',
                        '**/*BR*.*',
                        '**/Manifest*.*',
                        '**/*$Lambda$*.*',
                        '**/*Companion*.*',
                        '**/*Module*.*',
                        '**/*Dagger*.*',
                        '**/*Hilt*.*',
                        '**/*MembersInjector*.*',
                        '**/*_MembersInjector.class',
                        '**/*_Factory*.*',
                        '**/*_Provide*Factory*.*',
                        '**/*Extensions*.*',
                        // sealed and data classes
                        '**/*$Result.*',
                        '**/*$Result$*.*',
                        // adapters generated by moshi
                        '**/*JsonAdapter.*',
def javaTree = fileTree(dir: "${project.buildDir}/intermediates/javac/$sourceName/classes", excludes: fileFilter)
def kotlinTree = fileTree(dir: "${project.buildDir}/tmp/kotlin-classes/$sourceName", excludes: fileFilter)
classDirectories.from = files([javaTree], [kotlinTree])

reference - https://medium.com/nerd-for-tech/setup-jacoco-code-coverage-with-your-multimodule-android-app-kotlin-a0f82573a1

根据我的经验,这些过滤器根本无能为力。 我甚至试过 '**/*' ,而 everything 仍然出现在报告中。
Manzotin
Manzotin
发布于 2021-11-24
0 人赞同

你的排除法几乎是正确的,这里是正确的。

'**/databinding/*'