File tree Expand file tree Collapse file tree 3 files changed +34
-18
lines changed
scalac-scoverage-plugin/src/main/scala/scoverage Expand file tree Collapse file tree 3 files changed +34
-18
lines changed Original file line number Diff line number Diff line change @@ -64,20 +64,7 @@ object IOUtils {
6464 search(baseDir)
6565 }
6666
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+
8168
8269 val isMeasurementFile = (file : File ) => file.getName.startsWith(Constants .MeasurementsPrefix )
8370 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 {
1414 def read (file : File ): Coverage = {
1515 val xml = XML .loadFile(file)
1616
17- var id = 0
1817 val coverage = Coverage ()
1918 (xml \\ " statement" ) foreach { node => {
2019
@@ -39,12 +38,10 @@ object ScoverageXmlReader {
3938 method.text,
4039 source.text)
4140
42- id = id + 1
43-
4441 coverage add Statement (
4542 source.text,
4643 location,
47- id,
44+ 0 , // ids are irrelevant in the XML form
4845 start.text.toInt,
4946 end.text.toInt,
5047 line.text.toInt,
You can’t perform that action at this time.
0 commit comments