@@ -3,77 +3,83 @@ package scoverage
3
3
import java .io ._
4
4
5
5
import scala .io .Source
6
- import scala .xml .{ XML , Utility , Node }
6
+ import scala .xml .XML
7
7
8
8
object Serializer {
9
9
10
- /**
11
- * Write out coverage data to the given data directory
12
- */
10
+ // Write out coverage data to the given data directory, using the default coverage filename
13
11
def serialize (coverage : Coverage , dataDir : String ): Unit = serialize(coverage, coverageFile(dataDir))
14
- def serialize (coverage : Coverage , file : File ): Unit = IOUtils .writeToFile(file, serialize(coverage).toString)
15
12
16
- def coverageFile (dataDir : File ): File = coverageFile(dataDir.getAbsolutePath)
17
- def coverageFile (dataDir : String ): File = new File (dataDir, Constants .CoverageFileName )
13
+ // Write out coverage data to given file.
14
+ def serialize (coverage : Coverage , file : File ): Unit = {
15
+ val writer = new BufferedWriter (new FileWriter (file))
16
+ serialize(coverage, writer)
17
+ writer.close()
18
+ }
18
19
19
- def serialize (coverage : Coverage ): Node = {
20
- val lines = coverage.statements.map(stmt => {
21
- <statement >
22
- <source >
23
- {stmt.source}
24
- </source >
25
- <package >
26
- {stmt.location.packageName}
27
- </package >
28
- <class >
29
- {stmt.location.className}
30
- </class >
31
- <classType >
32
- {stmt.location.classType.toString}
33
- </classType >
34
- <topLevelClass >
35
- {stmt.location.topLevelClass}
36
- </topLevelClass >
37
- <method >
38
- {stmt.location.method}
39
- </method >
40
- <path >
41
- {stmt.location.sourcePath}
42
- </path >
43
- <id >
44
- {stmt.id.toString}
45
- </id >
46
- <start >
47
- {stmt.start.toString}
48
- </start >
49
- <end >
50
- {stmt.end.toString}
51
- </end >
52
- <line >
53
- {stmt.line.toString}
54
- </line >
55
- <description >
56
- {escape(stmt.desc)}
57
- </description >
58
- <symbolName >
59
- {escape(stmt.symbolName)}
60
- </symbolName >
61
- <treeName >
62
- {escape(stmt.treeName)}
63
- </treeName >
64
- <branch >
65
- {stmt.branch.toString}
66
- </branch >
67
- <count >
68
- {stmt.count.toString}
69
- </count >
70
- </statement >
71
- })
72
- Utility .trim(<statements >
73
- {lines}
74
- </statements >)
20
+ def serialize (coverage : Coverage , writer : Writer ): Unit = {
21
+ def writeStatement (stmt : Statement , writer : Writer ): Unit = {
22
+ writer.write {
23
+ <statement >
24
+ <source >
25
+ {stmt.source}
26
+ </source >
27
+ <package >
28
+ {stmt.location.packageName}
29
+ </package >
30
+ <class >
31
+ {stmt.location.className}
32
+ </class >
33
+ <classType >
34
+ {stmt.location.classType.toString}
35
+ </classType >
36
+ <topLevelClass >
37
+ {stmt.location.topLevelClass}
38
+ </topLevelClass >
39
+ <method >
40
+ {stmt.location.method}
41
+ </method >
42
+ <path >
43
+ {stmt.location.sourcePath}
44
+ </path >
45
+ <id >
46
+ {stmt.id.toString}
47
+ </id >
48
+ <start >
49
+ {stmt.start.toString}
50
+ </start >
51
+ <end >
52
+ {stmt.end.toString}
53
+ </end >
54
+ <line >
55
+ {stmt.line.toString}
56
+ </line >
57
+ <description >
58
+ {escape(stmt.desc)}
59
+ </description >
60
+ <symbolName >
61
+ {escape(stmt.symbolName)}
62
+ </symbolName >
63
+ <treeName >
64
+ {escape(stmt.treeName)}
65
+ </treeName >
66
+ <branch >
67
+ {stmt.branch.toString}
68
+ </branch >
69
+ <count >
70
+ {stmt.count.toString}
71
+ </count >
72
+ </statement >.toString + " \n "
73
+ }
74
+ }
75
+ writer.write(" <statements>\n " )
76
+ coverage.statements.foreach(stmt => writeStatement(stmt, writer))
77
+ writer.write(" </statements>" )
75
78
}
76
79
80
+ def coverageFile (dataDir : File ): File = coverageFile(dataDir.getAbsolutePath)
81
+ def coverageFile (dataDir : String ): File = new File (dataDir, Constants .CoverageFileName )
82
+
77
83
def deserialize (str : String ): Coverage = {
78
84
val xml = XML .loadString(str)
79
85
val statements = xml \ " statement" map (node => {
0 commit comments