-
Notifications
You must be signed in to change notification settings - Fork 3
/
jacocoLib.gradle
137 lines (121 loc) · 4.29 KB
/
jacocoLib.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
def coveredProject = subprojects
apply plugin: 'jacoco'
configure(coveredProject) { prj ->
apply plugin: 'jacoco'
jacoco {
toolVersion = "0.8.7"
}
task jacocoReport(type: JacocoReport, dependsOn: 'test') {
group = 'Reporting'
description = 'Generate Jacoco coverage'
reports {
csv.enabled = true
xml.enabled = false
html.enabled = true
}
final fileFilter = [
'**/R.class',
'**/R$*.class',
'**/BuildConfig.*',
'**/Manifest*.*',
'android/**/*.*',
'**/*Query.*',
'**/*Query$*.*',
// android
'**/R.class',
'**/R$*.class',
'**/BuildConfig.*',
'**/Manifest*.*',
'**/*Test*.*',
'android/**/*.*',
'androidx/**/*.*',
// butterKnife
'**/*$ViewInjector*.*',
'**/*$ViewBinder*.*',
// dagger
'**/*_MembersInjector.class',
'**/Dagger*Component.class',
'**/Dagger*Component$Builder.class',
'**/*Module_*Factory.class',
'**/di/module/*',
'**/*_Factory*.*',
'**/*Module*.*',
'**/*Dagger*.*',
'**/*Hilt*.*',
// kotlin
'**/*MapperImpl*.*',
'**/*$ViewInjector*.*',
'**/*$ViewBinder*.*',
'**/BuildConfig.*',
'**/*Component*.*',
'**/*BR*.*',
'**/Manifest*.*',
'**/*$Lambda$*.*',
'**/*Companion*.*',
'**/*Module*.*',
'**/*Dagger*.*',
'**/*Hilt*.*',
'**/*Factory*.',
'**/*$Builder*',
'**/*$Parcelable*.*',
'**/*MembersInjector*.*',
'**/*_MembersInjector.class',
'**/*_Factory*.*',
'**/*_Provide*Factory*.*',
'**/*Extensions*.*',
'**/*Test*.*',
'**/*Mock*.*',
// sealed and data classes
'**/*$Result.*',
'**/*$Result$*.*',
'**/me/**/*.*',
'**/api',
'**/org/**/*.*'
]
final kotlinTree = fileTree(dir: "${buildDir}/classes/kotlin", excludes: fileFilter)
final javacTree = fileTree(dir: "${buildDir}/intermediates/javac/debug", excludes: fileFilter)
final mainSrc = "${projectDir}/src/main/java"
sourceDirectories.setFrom files([mainSrc])
classDirectories.setFrom files([kotlinTree, javacTree])
executionData.setFrom fileTree(dir: prj.buildDir, includes: [
'jacoco/test.exec', 'outputs/code-coverage/connected/*coverage.ec'
])
}
}
/**
* Root task that generates an aggregated Jacoco test coverage report for all sub-projects
*/
task jacocoFullReport(type: JacocoReport, group: 'Coverage reports') {
group = 'Reporting'
description = 'Generates an aggregate report from all subprojects'
tasks.withType(Test) {
ignoreFailures true
}
def projects = coveredProject
//noinspection GrUnresolvedAccess
dependsOn(projects.jacocoReport)
final source = files(projects.jacocoReport.sourceDirectories)
additionalSourceDirs.setFrom source
sourceDirectories.setFrom source
classDirectories.setFrom files(projects.jacocoReport.classDirectories)
executionData.setFrom files(projects.jacocoReport.executionData)
reports {
html {
enabled true
destination file("${rootProject.projectDir}/build/reportsLibs/jacoco/html")
}
csv {
enabled true
destination file("${rootProject.projectDir}/build/reportsLibs/jacoco/jacocoFullReport.csv")
}
xml {
enabled true
destination file("${rootProject.projectDir}/build/reportsLibs/jacoco/jacocoFullReport.xml")
}
}
doFirst {
// Kotlin update new version deprication
//noinspection GroovyAssignabilityCheck
//executionData.setFrom files(executionData.findAll { it.exists() })
}
}