File tree 3 files changed +34
-18
lines changed
scalac-scoverage-plugin/src/main/scala/scoverage 3 files changed +34
-18
lines changed Original file line number Diff line number Diff line change @@ -64,20 +64,7 @@ object IOUtils {
64
64
search(baseDir)
65
65
}
66
66
67
- /**
68
- * Aggregates all subproject reports, returning the location of the aggregated file.
69
- */
70
- val aggregator : (File , File ) => Unit = (baseDir, targetDir) => {
71
- val files = IOUtils .reportFileSearch(baseDir)
72
- println(s " [info] Found ${files.size} subproject report files [ ${files.mkString(" ," )}] " )
73
- if (files.size > 0 ) {
74
- val nodes = files.map(xml.XML .loadFile)
75
- val aggregated = ScoverageXmlMerger .merge(nodes)
76
- targetDir.mkdirs()
77
- val outFile = new File (targetDir, Constants .XMLReportFilename )
78
- writeToFile(outFile, aggregated.toString)
79
- }
80
- }
67
+
81
68
82
69
val isMeasurementFile = (file : File ) => file.getName.startsWith(Constants .MeasurementsPrefix )
83
70
val isReportFile = (file : File ) => file.getName == Constants .XMLReportFilename
Original file line number Diff line number Diff line change
1
+ package scoverage .report
2
+
3
+ import java .io .File
4
+
5
+ import scoverage .{Coverage , IOUtils }
6
+
7
+ object CoverageAggregator {
8
+
9
+ def aggregate (baseDir : File , targetDir : File ): Option [Coverage ] = {
10
+ val files = IOUtils .reportFileSearch(baseDir)
11
+ println(s " [info] Found ${files.size} subproject report files [ ${files.mkString(" ," )}] " )
12
+ if (files.size > 0 ) {
13
+ val coverage = aggregatedCoverage(files)
14
+ Some (coverage)
15
+ } else {
16
+ None
17
+ }
18
+ }
19
+
20
+ private def aggregatedCoverage (files : Seq [File ]): Coverage = {
21
+ var id = 0
22
+ val coverage = Coverage ()
23
+ files foreach {
24
+ case file =>
25
+ val subcoverage = ScoverageXmlReader .read(file)
26
+ // need to ensure all the ids are unique otherwise the coverage object will have stmt collisions
27
+ id = id + 1
28
+ subcoverage.statements foreach { stmt => coverage add stmt.copy(id = id)}
29
+ }
30
+ coverage
31
+ }
32
+ }
Original file line number Diff line number Diff line change @@ -14,7 +14,6 @@ object ScoverageXmlReader {
14
14
def read (file : File ): Coverage = {
15
15
val xml = XML .loadFile(file)
16
16
17
- var id = 0
18
17
val coverage = Coverage ()
19
18
(xml \\ " statement" ) foreach { node => {
20
19
@@ -39,12 +38,10 @@ object ScoverageXmlReader {
39
38
method.text,
40
39
source.text)
41
40
42
- id = id + 1
43
-
44
41
coverage add Statement (
45
42
source.text,
46
43
location,
47
- id,
44
+ 0 , // ids are irrelevant in the XML form
48
45
start.text.toInt,
49
46
end.text.toInt,
50
47
line.text.toInt,
You can’t perform that action at this time.
0 commit comments