Skip to content

Commit 8a4ee15

Browse files
committed
Updated writers
1 parent 76ffd77 commit 8a4ee15

File tree

5 files changed

+38
-30
lines changed

5 files changed

+38
-30
lines changed

pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
<version>7</version>
1010
</parent>
1111

12-
<groupId>com.sksamuel.scales</groupId>
12+
<groupId>scales</groupId>
1313
<artifactId>scales</artifactId>
1414
<packaging>jar</packaging>
15-
<version>0.0.1-SNAPSHOT</version>
15+
<version>0.1.0-SNAPSHOT</version>
1616
<name>scales</name>
1717
<url>https://github.com/sksamuel/scales</url>
1818

src/main/scala/scales/IOUtils.scala

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package scales
2+
3+
import java.io.{FileWriter, BufferedWriter, File}
4+
5+
/** @author Stephen Samuel */
6+
object IOUtils {
7+
8+
def dropScalaPath(path: String) = path.split("src/main/scala").last
9+
10+
def toOutputPath(path: String) = "target/scales/" + dropScalaPath(path)
11+
def createDirs(path: String) = new File(path).isDirectory match {
12+
case false => new File(path).getParentFile.mkdirs
13+
case true => new File(path).mkdirs
14+
}
15+
16+
// write to relative path
17+
def write(path: String, data: AnyRef) {
18+
val outputPath = toOutputPath(path)
19+
createDirs(outputPath)
20+
println(s"Writing to path $outputPath")
21+
val file = new File(outputPath)
22+
val writer = new BufferedWriter(new FileWriter(file))
23+
writer.write(data.toString)
24+
writer.close()
25+
}
26+
}

src/main/scala/scales/plugin.scala

+5-3
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@ class ScalesComponent(val global: Global) extends PluginComponent with TypingTra
2828
.statements
2929
.size + " statments")
3030
println("Statements=" + Instrumentation.coverage.statements)
31-
val writer = ScalesHtmlWriter
32-
writer.write(Instrumentation.coverage)
31+
ScalesHtmlWriter.write(Instrumentation.coverage)
3332
ScalesXmlWriter.write(Instrumentation.coverage)
3433
}
3534
}
@@ -126,6 +125,8 @@ class ScalesComponent(val global: Global) extends PluginComponent with TypingTra
126125
Instrumentation.coverage.methodNames.append(d.name.toString)
127126
super.transform(tree)
128127

128+
case s: Select => super.transform(tree) // should only inside something we are instrumenting.
129+
129130
case m: ModuleDef if m.symbol.isSynthetic => tree // a generated object, such as case class companion
130131
case m: ModuleDef => super.transform(tree)
131132

@@ -136,9 +137,10 @@ class ScalesComponent(val global: Global) extends PluginComponent with TypingTra
136137
treeCopy.ValDef(tree, v.mods, v.name, v.tpt, transform(v.rhs))
137138

138139
case apply: Apply => instrument(apply)
140+
case tapply: TypeApply => instrument(tapply)
139141
case assign: Assign => instrument(assign)
140142

141-
case Match(clause: Tree, cases: List[CaseDef]) => treeCopy.Match(tree, instrument(clause), transformCases(cases))
143+
case Match(clause: Tree, cases: List[CaseDef]) => treeCopy.Match(tree, clause, transformCases(cases))
142144
case Try(t: Tree, cases: List[CaseDef], f: Tree) => treeCopy.Try(tree, instrument(t), transformCases(cases), instrument(f))
143145

144146
// println("Instrumenting apply " + apply)

src/main/scala/scales/report/html.scala renamed to src/main/scala/scales/report/ScalesHtmlWriter.scala

+3-14
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,20 @@
11
package scales.report
22

33
import scales._
4-
import java.io.{FileWriter, BufferedWriter, File}
54
import scala.reflect.internal.util.SourceFile
65
import scala.xml.{Unparsed, Node}
76
import scales.MeasuredFile
87
import java.util.Date
98

109
/** @author Stephen Samuel */
1110
object ScalesHtmlWriter extends ScalesWriter {
12-
def write(coverage: Coverage) {
1311

12+
def write(coverage: Coverage) {
1413
writeIndex(coverage)
15-
1614
for ( file <- coverage.files ) {
1715
val data = html(file)
18-
write(file.source.path.replace(".scala", "") + ".html", data)
16+
IOUtils.write(file.source.file.path + ".html", data)
1917
}
20-
2118
}
2219

2320
def risks(coverage: Coverage) = {
@@ -111,15 +108,7 @@ object ScalesHtmlWriter extends ScalesWriter {
111108
<h1>Scales Code Coverage</h1>{overview(coverage)}{risks(coverage)}{packages(coverage)}
112109
</body>
113110
</html>
114-
write("index.html", data.toString)
115-
}
116-
117-
def write(path: String, data: AnyRef) {
118-
println(s"Writing to path $path")
119-
val file = new File(path)
120-
val writer = new BufferedWriter(new FileWriter(file))
121-
writer.write(data.toString)
122-
writer.close()
111+
IOUtils.write("index.html", data.toString)
123112
}
124113

125114
def lines(source: SourceFile): Seq[String] = new String(source.content).split("\n")

src/main/scala/scales/report/ScalesXmlWriter.scala

+2-11
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package scales.report
22

3-
import scales.{MeasuredStatement, Coverage}
4-
import java.io.{FileWriter, BufferedWriter, File}
3+
import scales.{IOUtils, MeasuredStatement, Coverage}
54

65
/** @author Stephen Samuel */
76
object ScalesXmlWriter extends ScalesWriter {
@@ -11,15 +10,7 @@ object ScalesXmlWriter extends ScalesWriter {
1110
val xml = <scales timestamp={System.currentTimeMillis.toString}>
1211
{statements}
1312
</scales>
14-
write("scales.xml", xml.toString())
15-
}
16-
17-
def write(path: String, data: AnyRef) {
18-
println(s"Writing to path $path")
19-
val file = new File(path)
20-
val writer = new BufferedWriter(new FileWriter(file))
21-
writer.write(data.toString)
22-
writer.close()
13+
IOUtils.write("scales.xml", xml.toString())
2314
}
2415

2516
def statements2xml(statements: Iterable[MeasuredStatement]) = statements.map(arg => statement2xml(arg))

0 commit comments

Comments
 (0)