Skip to content

Commit 85fa0f3

Browse files
committed
changes per feedback
1 parent 89791e6 commit 85fa0f3

File tree

4 files changed

+34
-72
lines changed

4 files changed

+34
-72
lines changed

src/coverlet.core/CoverageDetails.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using System;
2+
3+
namespace Coverlet.Core
4+
{
5+
public class CoverageDetails
6+
{
7+
public double Covered { get; internal set; }
8+
public int Total { get; internal set; }
9+
public double Percent
10+
{
11+
get => Math.Round(Total == 0 ? Total : Covered / Total, 3);
12+
}
13+
}
14+
}

src/coverlet.core/CoverageSummary.cs

Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,13 @@
44

55
namespace Coverlet.Core
66
{
7-
public class CoverageDetails
8-
{
9-
public double Covered { get; set; }
10-
public int Total { get; set; }
11-
public double Percent { get; set; }
12-
}
137
public class CoverageSummary
148
{
159
public CoverageDetails CalculateLineCoverage(Lines lines)
1610
{
1711
var details = new CoverageDetails();
1812
details.Covered = lines.Where(l => l.Value.Hits > 0).Count();
1913
details.Total = lines.Count;
20-
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
21-
details.Percent = Math.Round(coverage, 3);
2214
return details;
2315
}
2416

@@ -31,9 +23,6 @@ public CoverageDetails CalculateLineCoverage(Methods methods)
3123
details.Covered += methodCoverage.Covered;
3224
details.Total += methodCoverage.Total;
3325
}
34-
35-
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
36-
details.Percent = Math.Round(coverage, 3);
3726
return details;
3827
}
3928

@@ -46,9 +35,6 @@ public CoverageDetails CalculateLineCoverage(Classes classes)
4635
details.Covered += classCoverage.Covered;
4736
details.Total += classCoverage.Total;
4837
}
49-
50-
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
51-
details.Percent = Math.Round(coverage, 3);
5238
return details;
5339
}
5440

@@ -61,9 +47,6 @@ public CoverageDetails CalculateLineCoverage(Documents documents)
6147
details.Covered += documentCoverage.Covered;
6248
details.Total += documentCoverage.Total;
6349
}
64-
65-
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
66-
details.Percent = Math.Round(coverage, 3);
6750
return details;
6851
}
6952

@@ -76,9 +59,6 @@ public CoverageDetails CalculateLineCoverage(Modules modules)
7659
details.Covered += moduleCoverage.Covered;
7760
details.Total += moduleCoverage.Total;
7861
}
79-
80-
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
81-
details.Percent = Math.Round(coverage, 3);
8262
return details;
8363
}
8464

@@ -87,8 +67,6 @@ public CoverageDetails CalculateBranchCoverage(List<BranchInfo> branchInfo)
8767
var details = new CoverageDetails();
8868
details.Covered = branchInfo.Count(bi => bi.Hits > 0);
8969
details.Total = branchInfo.Count;
90-
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
91-
details.Percent = Math.Round(coverage, 3);
9270
return details;
9371
}
9472

@@ -97,8 +75,6 @@ public CoverageDetails CalculateBranchCoverage(Branches branches)
9775
var details = new CoverageDetails();
9876
details.Covered = branches.Sum(b => b.Value.Where(bi => bi.Hits > 0).Count());
9977
details.Total = branches.Sum(b => b.Value.Count());
100-
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
101-
details.Percent = Math.Round(coverage, 3);
10278
return details;
10379
}
10480

@@ -111,9 +87,6 @@ public CoverageDetails CalculateBranchCoverage(Methods methods)
11187
details.Covered += methodCoverage.Covered;
11288
details.Total += methodCoverage.Total;
11389
}
114-
115-
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
116-
details.Percent = Math.Round(coverage, 3);
11790
return details;
11891
}
11992

@@ -126,9 +99,6 @@ public CoverageDetails CalculateBranchCoverage(Classes classes)
12699
details.Covered += classCoverage.Covered;
127100
details.Total += classCoverage.Total;
128101
}
129-
130-
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
131-
details.Percent = Math.Round(coverage, 3);
132102
return details;
133103
}
134104

@@ -141,9 +111,6 @@ public CoverageDetails CalculateBranchCoverage(Documents documents)
141111
details.Covered += documentCoverage.Covered;
142112
details.Total += documentCoverage.Total;
143113
}
144-
145-
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
146-
details.Percent = Math.Round(coverage, 3);
147114
return details;
148115
}
149116

@@ -156,9 +123,6 @@ public CoverageDetails CalculateBranchCoverage(Modules modules)
156123
details.Covered += moduleCoverage.Covered;
157124
details.Total += moduleCoverage.Total;
158125
}
159-
160-
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
161-
details.Percent = Math.Round(coverage, 3);
162126
return details;
163127
}
164128

@@ -167,7 +131,6 @@ public CoverageDetails CalculateMethodCoverage(Lines lines)
167131
var details = new CoverageDetails();
168132
details.Covered = lines.Any(l => l.Value.Hits > 0) ? 1 : 0;
169133
details.Total = 1;
170-
details.Percent = details.Covered;
171134
return details;
172135
}
173136

@@ -181,9 +144,6 @@ public CoverageDetails CalculateMethodCoverage(Methods methods)
181144
details.Covered += methodCoverage.Covered;
182145
}
183146
details.Total = methodsWithLines.Count();
184-
185-
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
186-
details.Percent = Math.Round(coverage, 3);
187147
return details;
188148
}
189149

@@ -196,9 +156,6 @@ public CoverageDetails CalculateMethodCoverage(Classes classes)
196156
details.Covered += classCoverage.Covered;
197157
details.Total += classCoverage.Total;
198158
}
199-
200-
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
201-
details.Percent = Math.Round(coverage, 3);
202159
return details;
203160
}
204161

@@ -211,9 +168,6 @@ public CoverageDetails CalculateMethodCoverage(Documents documents)
211168
details.Covered += documentCoverage.Covered;
212169
details.Total += documentCoverage.Total;
213170
}
214-
215-
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
216-
details.Percent = Math.Round(coverage, 3);
217171
return details;
218172
}
219173

@@ -226,9 +180,6 @@ public CoverageDetails CalculateMethodCoverage(Modules modules)
226180
details.Covered += moduleCoverage.Covered;
227181
details.Total += moduleCoverage.Total;
228182
}
229-
230-
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
231-
details.Percent = Math.Round(coverage, 3);
232183
return details;
233184
}
234185
}

src/coverlet.core/Instrumentation/Instrumenter.cs

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -126,28 +126,25 @@ private void InstrumentIL(MethodDefinition method)
126126
index += 3;
127127
}
128128

129-
if (targetedBranchPoints.Count() > 0)
129+
foreach (var _branchTarget in targetedBranchPoints)
130130
{
131-
foreach (var _branchTarget in targetedBranchPoints)
132-
{
133-
/*
134-
* Skip branches with no sequence point reference for now.
135-
* In this case for an anonymous class the compiler will dynamically create an Equals 'utility' method.
136-
* The CecilSymbolHelper will create branch points with a start line of -1 and no document, which
137-
* I am currently not sure how to handle.
138-
*/
139-
if (_branchTarget.StartLine == -1 || _branchTarget.Document == null)
140-
continue;
141-
142-
var target = AddInstrumentationCode(method, processor, instruction, _branchTarget);
143-
foreach (var _instruction in processor.Body.Instructions)
144-
ReplaceInstructionTarget(_instruction, instruction, target);
145-
146-
foreach (ExceptionHandler handler in processor.Body.ExceptionHandlers)
147-
ReplaceExceptionHandlerBoundary(handler, instruction, target);
148-
149-
index += 3;
150-
}
131+
/*
132+
* Skip branches with no sequence point reference for now.
133+
* In this case for an anonymous class the compiler will dynamically create an Equals 'utility' method.
134+
* The CecilSymbolHelper will create branch points with a start line of -1 and no document, which
135+
* I am currently not sure how to handle.
136+
*/
137+
if (_branchTarget.StartLine == -1 || _branchTarget.Document == null)
138+
continue;
139+
140+
var target = AddInstrumentationCode(method, processor, instruction, _branchTarget);
141+
foreach (var _instruction in processor.Body.Instructions)
142+
ReplaceInstructionTarget(_instruction, instruction, target);
143+
144+
foreach (ExceptionHandler handler in processor.Body.ExceptionHandlers)
145+
ReplaceExceptionHandlerBoundary(handler, instruction, target);
146+
147+
index += 3;
151148
}
152149

153150
index++;
@@ -171,7 +168,6 @@ private Instruction AddInstrumentationCode(MethodDefinition method, ILProcessor
171168
document.Lines.Add(new Line { Number = i, Class = method.DeclaringType.FullName, Method = method.FullName });
172169
}
173170

174-
// string flag = branchPoints.Count > 0 ? "B" : "L";
175171
string marker = $"L,{document.Path},{sequencePoint.StartLine},{sequencePoint.EndLine}";
176172

177173
var pathInstr = Instruction.Create(OpCodes.Ldstr, _result.HitsFilePath);

src/coverlet.core/Symbols/CecilSymbolHelper.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public static class CecilSymbolHelper
1919
{
2020
private const int StepOverLineCode = 0xFEEFEE;
2121
private static readonly Regex IsMovenext = new Regex(@"\<[^\s>]+\>\w__\w(\w)?::MoveNext\(\)$", RegexOptions.Compiled | RegexOptions.ExplicitCapture);
22+
2223
public static List<BranchPoint> GetBranchPoints(MethodDefinition methodDefinition)
2324
{
2425
var list = new List<BranchPoint>();
@@ -56,7 +57,7 @@ private static void GetBranchPoints(MethodDefinition methodDefinition, List<Bran
5657
var branchingInstructionLine = closestSeqPt.Maybe(x => x.StartLine, -1);
5758
var document = closestSeqPt.Maybe(x => x.Document.Url);
5859

59-
if (null == instruction.Next)
60+
if (instruction.Next == null)
6061
return;
6162

6263
if (!BuildPointsForConditionalBranch(list, instruction, branchingInstructionLine, document, branchOffset, pathCounter, instructions, ref ordinal, methodDefinition))

0 commit comments

Comments
 (0)