1
+ using System ;
2
+ using System . Collections . Generic ;
3
+ using System . Linq ;
4
+
1
5
namespace Coverlet . Core
2
6
{
3
7
public class CoverageSummary
@@ -37,5 +41,131 @@ public CoverageSummaryResult CalculateSummary()
37
41
38
42
return result ;
39
43
}
44
+
45
+ public double CalculateLineCoverage ( KeyValuePair < string , Lines > method )
46
+ {
47
+ double coverage = 0 , totalLines = 0 , linesCovered = 0 ;
48
+ foreach ( var line in method . Value )
49
+ {
50
+ totalLines ++ ;
51
+ if ( line . Value . Hits > 0 )
52
+ linesCovered ++ ;
53
+ }
54
+
55
+ coverage = totalLines == 0 ? totalLines : linesCovered / totalLines ;
56
+ return Math . Round ( coverage , 1 ) ;
57
+ }
58
+
59
+ public double CalculateLineCoverage ( KeyValuePair < string , Methods > @class )
60
+ {
61
+ double total = 0 , average = 0 ;
62
+ foreach ( var method in @class . Value )
63
+ total += CalculateLineCoverage ( method ) ;
64
+
65
+ average = total / @class . Value . Count ;
66
+ return Math . Round ( average , 1 ) ;
67
+ }
68
+
69
+ public double CalculateLineCoverage ( KeyValuePair < string , Classes > document )
70
+ {
71
+ double total = 0 , average = 0 ;
72
+ foreach ( var @class in document . Value )
73
+ total += CalculateLineCoverage ( @class ) ;
74
+
75
+ average = total / document . Value . Count ;
76
+ return Math . Round ( average , 1 ) ;
77
+ }
78
+
79
+ public double CalculateLineCoverage ( KeyValuePair < string , Documents > module )
80
+ {
81
+ double total = 0 , average = 0 ;
82
+ foreach ( var document in module . Value )
83
+ total += CalculateLineCoverage ( document ) ;
84
+
85
+ average = total / module . Value . Count ;
86
+ return Math . Round ( average , 1 ) ;
87
+ }
88
+
89
+ public double CalculateBranchCoverage ( KeyValuePair < string , Lines > method )
90
+ {
91
+ double coverage = 0 , totalLines = 0 , linesCovered = 0 ;
92
+ foreach ( var line in method . Value )
93
+ {
94
+ totalLines ++ ;
95
+ if ( line . Value . Hits > 0 && line . Value . IsBranchPoint )
96
+ linesCovered ++ ;
97
+ }
98
+
99
+ coverage = totalLines == 0 ? totalLines : linesCovered / totalLines ;
100
+ return Math . Round ( coverage , 1 ) ;
101
+ }
102
+
103
+ public double CalculateBranchCoverage ( KeyValuePair < string , Methods > @class )
104
+ {
105
+ double total = 0 , average = 0 ;
106
+ foreach ( var method in @class . Value )
107
+ total += CalculateBranchCoverage ( method ) ;
108
+
109
+ average = total / @class . Value . Count ;
110
+ return Math . Round ( average , 1 ) ;
111
+ }
112
+
113
+ public double CalculateBranchCoverage ( KeyValuePair < string , Classes > document )
114
+ {
115
+ double total = 0 , average = 0 ;
116
+ foreach ( var @class in document . Value )
117
+ total += CalculateBranchCoverage ( @class ) ;
118
+
119
+ average = total / document . Value . Count ;
120
+ return Math . Round ( average , 1 ) ;
121
+ }
122
+
123
+ public double CalculateBranchCoverage ( KeyValuePair < string , Documents > module )
124
+ {
125
+ double total = 0 , average = 0 ;
126
+ foreach ( var document in module . Value )
127
+ total += CalculateBranchCoverage ( document ) ;
128
+
129
+ average = total / module . Value . Count ;
130
+ return Math . Round ( average , 1 ) ;
131
+ }
132
+
133
+ public double CalculateMethodCoverage ( KeyValuePair < string , Lines > method )
134
+ {
135
+ if ( method . Value . Any ( l => l . Value . Hits > 0 ) )
136
+ return 1 ;
137
+
138
+ return 0 ;
139
+ }
140
+
141
+ public double CalculateMethodCoverage ( KeyValuePair < string , Methods > @class )
142
+ {
143
+ double total = 0 , average = 0 ;
144
+ foreach ( var method in @class . Value )
145
+ total += CalculateMethodCoverage ( method ) ;
146
+
147
+ average = total / @class . Value . Count ;
148
+ return Math . Round ( average , 1 ) ;
149
+ }
150
+
151
+ public double CalculateMethodCoverage ( KeyValuePair < string , Classes > document )
152
+ {
153
+ double total = 0 , average = 0 ;
154
+ foreach ( var @class in document . Value )
155
+ total += CalculateMethodCoverage ( @class ) ;
156
+
157
+ average = total / document . Value . Count ;
158
+ return Math . Round ( average , 1 ) ;
159
+ }
160
+
161
+ public double CalculateMethodCoverage ( KeyValuePair < string , Documents > module )
162
+ {
163
+ double total = 0 , average = 0 ;
164
+ foreach ( var document in module . Value )
165
+ total += CalculateMethodCoverage ( document ) ;
166
+
167
+ average = total / module . Value . Count ;
168
+ return Math . Round ( average , 1 ) ;
169
+ }
40
170
}
41
171
}
0 commit comments