Итак, после обновления до Jacoco 0.8.2 мое покрытие кода класса данных значительно улучшилось, поскольку теперь оно отфильтровывает большинство сгенерированных функций, «равно», «хэш-код» и т. Д. Однако, он все еще ищет тесты для все геттеры и сеттеры, которые генерирует Kotlin.
Есть ли дополнительные настройки, которые я пропускаю, чтобы разрешить их отфильтровывать? Я знаю, что могу отфильтровать целые классы или каталоги, но в идеале есть способ отфильтровать эти функции. Ниже мое текущее задание для Джакоко.
project.jacoco {
toolVersion = '0.8.2'
}
project.tasks.create(
name: 'jacocoTestReport',
type: JacocoReport,
dependsOn: "test${capVariant}UnitTest"
) {
def buildDir = project.buildDir
def coverageSourceDirs = [
"src/main/java",
"src/main/kotlin"
]
def fileFilter = [
'**/R.class',
'**/R$*.class',
'**/*$ViewInjector*.*',
'**/*_Factory.*',
'**/*_MembersInjector.*',
'**/*$ViewBinder*.*',
'**/BuildConfig.*',
'**/Manifest*.*',
'**/di/**',
'**/*Activity*.*',
'**/*Fragment*.*',
'**/*Adapter*.*',
'**/*ViewHolder*.*',
'**/reusableComponents/**',
'**/App.*'
]
def javaClasses = fileTree(
dir: "$buildDir/intermediates/classes/$folder",
excludes: fileFilter
)
def kotlinClasses = fileTree(
dir: "$buildDir/tmp/kotlin-classes/$variant",
excludes: fileFilter
)
KotlinGeneratedFilter = true
group = "Reporting"
description = "Generate Jacoco coverage reports for the ${project.name} with the " +
"$variant variant."
classDirectories = files([ javaClasses ], [ kotlinClasses ])
additionalSourceDirs = files(coverageSourceDirs)
sourceDirectories = files(coverageSourceDirs)
executionData = files("${project.buildDir}/jacoco/test${capVariant}UnitTest.exec")
reports {
xml.enabled = true
html.enabled = true
}
}