从 jacoco 报告中排除数据绑定包
Posted
技术标签:
【中文标题】从 jacoco 报告中排除数据绑定包【英文标题】:Exclude databinding package from jacoco report 【发布时间】:2021-12-05 02:06:16 【问题描述】:在我的 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/**/*.*']
)
它们似乎不起作用。有没有办法从我的报告中删除这个包/文件夹?
【问题讨论】:
【参考方案1】:你可以定义更广泛的文件过滤器
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])
参考 - https://medium.com/nerd-for-tech/setup-jacoco-code-coverage-with-your-multimodule-android-app-kotlin-a0f82573a1
【讨论】:
【参考方案2】:您的排除几乎是正确的,这是正确的:
'**/数据绑定/*'
这是因为数据绑定构建文件位于
app\build\intermediates\javac\[buildVariantName]\classes\[your\package\name]\databinding
我现在似乎找不到文档,但我认为您的排除 databinding/**/*.*
指向 databinding 子目录中的任何文件,而不是目录本身中的文件
【讨论】:
以上是关于从 jacoco 报告中排除数据绑定包的主要内容,如果未能解决你的问题,请参考以下文章
从 DataGrip 中的“数据库、表、过程”搜索中排除数据库