changes per feedback
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user