changes per feedback

This commit is contained in:
Jason Hunter
2018-05-05 12:51:30 -04:00
parent 89791e6425
commit 85fa0f35eb
4 changed files with 32 additions and 70 deletions
+14
View File
@@ -0,0 +1,14 @@
using System;
namespace Coverlet.Core
{
public class CoverageDetails
{
public double Covered { get; internal set; }
public int Total { get; internal set; }
public double Percent
{
get => Math.Round(Total == 0 ? Total : Covered / Total, 3);
}
}
}
-49
View File
@@ -4,12 +4,6 @@ using System.Linq;
namespace Coverlet.Core
{
public class CoverageDetails
{
public double Covered { get; set; }
public int Total { get; set; }
public double Percent { get; set; }
}
public class CoverageSummary
{
public CoverageDetails CalculateLineCoverage(Lines lines)
@@ -17,8 +11,6 @@ namespace Coverlet.Core
var details = new CoverageDetails();
details.Covered = lines.Where(l => l.Value.Hits > 0).Count();
details.Total = lines.Count;
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
details.Percent = Math.Round(coverage, 3);
return details;
}
@@ -31,9 +23,6 @@ namespace Coverlet.Core
details.Covered += methodCoverage.Covered;
details.Total += methodCoverage.Total;
}
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
details.Percent = Math.Round(coverage, 3);
return details;
}
@@ -46,9 +35,6 @@ namespace Coverlet.Core
details.Covered += classCoverage.Covered;
details.Total += classCoverage.Total;
}
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
details.Percent = Math.Round(coverage, 3);
return details;
}
@@ -61,9 +47,6 @@ namespace Coverlet.Core
details.Covered += documentCoverage.Covered;
details.Total += documentCoverage.Total;
}
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
details.Percent = Math.Round(coverage, 3);
return details;
}
@@ -76,9 +59,6 @@ namespace Coverlet.Core
details.Covered += moduleCoverage.Covered;
details.Total += moduleCoverage.Total;
}
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
details.Percent = Math.Round(coverage, 3);
return details;
}
@@ -87,8 +67,6 @@ namespace Coverlet.Core
var details = new CoverageDetails();
details.Covered = branchInfo.Count(bi => bi.Hits > 0);
details.Total = branchInfo.Count;
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
details.Percent = Math.Round(coverage, 3);
return details;
}
@@ -97,8 +75,6 @@ namespace Coverlet.Core
var details = new CoverageDetails();
details.Covered = branches.Sum(b => b.Value.Where(bi => bi.Hits > 0).Count());
details.Total = branches.Sum(b => b.Value.Count());
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
details.Percent = Math.Round(coverage, 3);
return details;
}
@@ -111,9 +87,6 @@ namespace Coverlet.Core
details.Covered += methodCoverage.Covered;
details.Total += methodCoverage.Total;
}
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
details.Percent = Math.Round(coverage, 3);
return details;
}
@@ -126,9 +99,6 @@ namespace Coverlet.Core
details.Covered += classCoverage.Covered;
details.Total += classCoverage.Total;
}
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
details.Percent = Math.Round(coverage, 3);
return details;
}
@@ -141,9 +111,6 @@ namespace Coverlet.Core
details.Covered += documentCoverage.Covered;
details.Total += documentCoverage.Total;
}
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
details.Percent = Math.Round(coverage, 3);
return details;
}
@@ -156,9 +123,6 @@ namespace Coverlet.Core
details.Covered += moduleCoverage.Covered;
details.Total += moduleCoverage.Total;
}
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
details.Percent = Math.Round(coverage, 3);
return details;
}
@@ -167,7 +131,6 @@ namespace Coverlet.Core
var details = new CoverageDetails();
details.Covered = lines.Any(l => l.Value.Hits > 0) ? 1 : 0;
details.Total = 1;
details.Percent = details.Covered;
return details;
}
@@ -181,9 +144,6 @@ namespace Coverlet.Core
details.Covered += methodCoverage.Covered;
}
details.Total = methodsWithLines.Count();
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
details.Percent = Math.Round(coverage, 3);
return details;
}
@@ -196,9 +156,6 @@ namespace Coverlet.Core
details.Covered += classCoverage.Covered;
details.Total += classCoverage.Total;
}
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
details.Percent = Math.Round(coverage, 3);
return details;
}
@@ -211,9 +168,6 @@ namespace Coverlet.Core
details.Covered += documentCoverage.Covered;
details.Total += documentCoverage.Total;
}
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
details.Percent = Math.Round(coverage, 3);
return details;
}
@@ -226,9 +180,6 @@ namespace Coverlet.Core
details.Covered += moduleCoverage.Covered;
details.Total += moduleCoverage.Total;
}
double coverage = details.Total == 0 ? details.Total : details.Covered / details.Total;
details.Percent = Math.Round(coverage, 3);
return details;
}
}
@@ -126,28 +126,25 @@ namespace Coverlet.Core.Instrumentation
index += 3;
}
if (targetedBranchPoints.Count() > 0)
foreach (var _branchTarget in targetedBranchPoints)
{
foreach (var _branchTarget in targetedBranchPoints)
{
/*
* Skip branches with no sequence point reference for now.
* In this case for an anonymous class the compiler will dynamically create an Equals 'utility' method.
* The CecilSymbolHelper will create branch points with a start line of -1 and no document, which
* I am currently not sure how to handle.
*/
if (_branchTarget.StartLine == -1 || _branchTarget.Document == null)
continue;
var target = AddInstrumentationCode(method, processor, instruction, _branchTarget);
foreach (var _instruction in processor.Body.Instructions)
ReplaceInstructionTarget(_instruction, instruction, target);
/*
* Skip branches with no sequence point reference for now.
* In this case for an anonymous class the compiler will dynamically create an Equals 'utility' method.
* The CecilSymbolHelper will create branch points with a start line of -1 and no document, which
* I am currently not sure how to handle.
*/
if (_branchTarget.StartLine == -1 || _branchTarget.Document == null)
continue;
var target = AddInstrumentationCode(method, processor, instruction, _branchTarget);
foreach (var _instruction in processor.Body.Instructions)
ReplaceInstructionTarget(_instruction, instruction, target);
foreach (ExceptionHandler handler in processor.Body.ExceptionHandlers)
ReplaceExceptionHandlerBoundary(handler, instruction, target);
foreach (ExceptionHandler handler in processor.Body.ExceptionHandlers)
ReplaceExceptionHandlerBoundary(handler, instruction, target);
index += 3;
}
index += 3;
}
index++;
@@ -171,7 +168,6 @@ namespace Coverlet.Core.Instrumentation
document.Lines.Add(new Line { Number = i, Class = method.DeclaringType.FullName, Method = method.FullName });
}
// string flag = branchPoints.Count > 0 ? "B" : "L";
string marker = $"L,{document.Path},{sequencePoint.StartLine},{sequencePoint.EndLine}";
var pathInstr = Instruction.Create(OpCodes.Ldstr, _result.HitsFilePath);
@@ -19,6 +19,7 @@ namespace Coverlet.Core.Symbols
{
private const int StepOverLineCode = 0xFEEFEE;
private static readonly Regex IsMovenext = new Regex(@"\<[^\s>]+\>\w__\w(\w)?::MoveNext\(\)$", RegexOptions.Compiled | RegexOptions.ExplicitCapture);
public static List<BranchPoint> GetBranchPoints(MethodDefinition methodDefinition)
{
var list = new List<BranchPoint>();
@@ -56,7 +57,7 @@ namespace Coverlet.Core.Symbols
var branchingInstructionLine = closestSeqPt.Maybe(x => x.StartLine, -1);
var document = closestSeqPt.Maybe(x => x.Document.Url);
if (null == instruction.Next)
if (instruction.Next == null)
return;
if (!BuildPointsForConditionalBranch(list, instruction, branchingInstructionLine, document, branchOffset, pathCounter, instructions, ref ordinal, methodDefinition))