Skip to content

Commit

Permalink
Some doc for Serializer
Browse files Browse the repository at this point in the history
  • Loading branch information
TheElectronWill committed Mar 5, 2022
1 parent c71bd11 commit be16d27
Showing 1 changed file with 11 additions and 7 deletions.
18 changes: 11 additions & 7 deletions compiler/src/dotty/tools/dotc/coverage/Serializer.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,34 @@ import java.io._

import scala.io.Source

/**
* Serializes scoverage data.
* @see https://github.com/scoverage/scalac-scoverage-plugin/blob/main/scalac-scoverage-plugin/src/main/scala/scoverage/Serializer.scala
*/
object Serializer:

private val coverageFileName = "scoverage.coverage"
private val coverageDataFormatVersion = "3.0"
private val CoverageFileName = "scoverage.coverage"
private val CoverageDataFormatVersion = "3.0"

/** Write out coverage data to the given data directory, using the default coverage filename */
def serialize(coverage: Coverage, dataDir: String, sourceRoot: String): Unit =
serialize(coverage, coverageFile(dataDir), new File(sourceRoot))

/** Write out coverage data to given file. */
def serialize(coverage: Coverage, file: File, sourceRoot: File): Unit =
val writer = new BufferedWriter(new FileWriter(file))
val writer = BufferedWriter(FileWriter(file))
serialize(coverage, writer, sourceRoot)
writer.close()

def serialize(coverage: Coverage, writer: Writer, sourceRoot: File): Unit =

def getRelativePath(filePath: String): String =
val base = sourceRoot.getCanonicalFile().toPath()
val relPath = base.relativize(new File(filePath).getCanonicalFile().toPath())
val relPath = base.relativize(File(filePath).getCanonicalFile().toPath())
relPath.toString

def writeHeader(writer: Writer): Unit =
writer.write(s"""# Coverage data, format version: $coverageDataFormatVersion
writer.write(s"""# Coverage data, format version: $CoverageDataFormatVersion
|# Statement data:
|# - id
|# - source path
Expand Down Expand Up @@ -71,9 +75,9 @@ object Serializer:
|""".stripMargin)

writeHeader(writer)
coverage.statements.toVector
coverage.statements.toSeq
.sortBy(_.id)
.foreach(stmt => writeStatement(stmt, writer))

def coverageFile(dataDir: File): File = coverageFile(dataDir.getAbsolutePath)
def coverageFile(dataDir: String): File = File(dataDir, coverageFileName)
def coverageFile(dataDir: String): File = File(dataDir, CoverageFileName)

0 comments on commit be16d27

Please sign in to comment.