Skip to content

Commit 0e00774

Browse files
committed
Introduce "Ignored Statements" count in HTML report
This count only includes statements excluded using the $COVERAGE-OFF$ tag, not those excluded using the sbt "coverageExcludedPackages" or maven "excludedPackages", etc. flags.
1 parent a5f5b34 commit 0e00774

File tree

3 files changed

+33
-2
lines changed

3 files changed

+33
-2
lines changed

scalac-scoverage-plugin/src/main/scala/scoverage/Serializer.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,8 @@ object Serializer {
121121

122122
val coverage = Coverage()
123123
for ( statement <- statements )
124-
if (!statement.ignored) coverage.add(statement)
124+
if (statement.ignored) coverage.addIgnoredStatement(statement)
125+
else coverage.add(statement)
125126
coverage
126127
}
127128

scalac-scoverage-plugin/src/main/scala/scoverage/coverage.scala

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ case class Coverage()
1818
override def statements = statementsById.values
1919
def add(stmt: Statement): Unit = statementsById.put(stmt.id, stmt)
2020

21+
private val ignoredStatementsById = mutable.Map[Int, Statement]()
22+
override def ignoredStatements = ignoredStatementsById.values
23+
def addIgnoredStatement(stmt: Statement): Unit = ignoredStatementsById.put(stmt.id, stmt)
24+
25+
2126
def avgClassesPerPackage = classCount / packageCount.toDouble
2227
def avgClassesPerPackageFormatted: String = "%.2f".format(avgClassesPerPackage)
2328

@@ -65,23 +70,30 @@ trait FileBuilders {
6570
def fileCount: Int = files.size
6671
}
6772

68-
case class MeasuredMethod(name: String, statements: Iterable[Statement]) extends CoverageMetrics
73+
case class MeasuredMethod(name: String, statements: Iterable[Statement]) extends CoverageMetrics {
74+
override def ignoredStatements: Iterable[Statement] = ???
75+
}
6976

7077
case class MeasuredClass(name: String, statements: Iterable[Statement])
7178
extends CoverageMetrics with MethodBuilders {
7279
def source: String = statements.head.source
7380
def simpleName = name.split('.').last
7481
def loc = statements.map(_.line).max
82+
83+
override def ignoredStatements: Iterable[Statement] = ???
7584
}
7685

7786
case class MeasuredPackage(name: String, statements: Iterable[Statement])
7887
extends CoverageMetrics with ClassCoverage with ClassBuilders with FileBuilders {
88+
override def ignoredStatements: Iterable[Statement] = ???
7989
}
8090

8191
case class MeasuredFile(source: String, statements: Iterable[Statement])
8292
extends CoverageMetrics with ClassCoverage with ClassBuilders {
8393
def filename = new File(source).getName
8494
def loc = statements.map(_.line).max
95+
96+
override def ignoredStatements: Iterable[Statement] = ???
8597
}
8698

8799
case class Statement(source: String,
@@ -127,6 +139,10 @@ object ClassRef {
127139
trait CoverageMetrics {
128140
def statements: Iterable[Statement]
129141
def statementCount: Int = statements.size
142+
143+
def ignoredStatements: Iterable[Statement]
144+
def ignoredStatementCount: Int = ignoredStatements.size
145+
130146
def invokedStatements: Iterable[Statement] = statements.filter(_.count > 0)
131147
def invokedStatementCount = invokedStatements.size
132148
def statementCoverage: Double = if (statementCount == 0) 1 else invokedStatementCount / statementCount.toDouble

scalac-scoverage-plugin/src/main/scala/scoverage/report/ScoverageHtmlWriter.scala

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,20 @@ class ScoverageHtmlWriter(sourceDirectories: Seq[File], outputDir: File) extends
494494
{coverage.invokedBranchesCount.toString}
495495
</td>
496496
</tr>
497+
<tr>
498+
<td>
499+
Ignored statements:
500+
</td>
501+
<td>
502+
{coverage.ignoredStatementCount.toString}
503+
</td>
504+
<td></td>
505+
<td></td>
506+
<td></td>
507+
<td></td>
508+
<td></td>
509+
<td></td>
510+
</tr>
497511
<tr>
498512
<td>
499513
Statement coverage:

0 commit comments

Comments
 (0)