@@ -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
7077case 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
7786case class MeasuredPackage (name : String , statements : Iterable [Statement ])
7887 extends CoverageMetrics with ClassCoverage with ClassBuilders with FileBuilders {
88+ override def ignoredStatements : Iterable [Statement ] = ???
7989}
8090
8191case 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
8799case class Statement (source : String ,
@@ -127,6 +139,10 @@ object ClassRef {
127139trait 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
0 commit comments