Skip to content

Commit

Permalink
add visited class/method to summary OpenCover#283
Browse files Browse the repository at this point in the history
  • Loading branch information
sawilde committed Apr 3, 2015
1 parent 3fd00b6 commit 633f404
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 23 deletions.
23 changes: 6 additions & 17 deletions main/OpenCover.Console/Program.cs
Expand Up @@ -323,15 +323,10 @@ private static void DisplayResults(IPersistance persistance, ICommandLine parser

var coverageSession = persistance.CoverageSession;

var totalClasses = 0;
var visitedClasses = 0;

var altTotalClasses = 0;
var altVisitedClasses = 0;

var totalMethods = 0;
var visitedMethods = 0;

var altTotalMethods = 0;
var altVisitedMethods = 0;

Expand All @@ -349,12 +344,9 @@ private static void DisplayResults(IPersistance persistance, ICommandLine parser

if ((@class.Methods.Any(x => !x.ShouldSerializeSkippedDueTo() && x.SequencePoints.Any(y => y.VisitCount > 0))))
{
visitedClasses += 1;
totalClasses += 1;
}
else if ((@class.Methods.Any(x => x.FileRef != null)))
{
totalClasses += 1;
unvisitedClasses.Add(@class.FullName);
}

Expand All @@ -372,12 +364,9 @@ private static void DisplayResults(IPersistance persistance, ICommandLine parser
{
if ((method.SequencePoints.Any(x => x.VisitCount > 0)))
{
visitedMethods += 1;
totalMethods += 1;
}
else if (method.FileRef != null)
{
totalMethods += 1;
unvisitedMethods.Add(string.Format("{0}", method.Name));
}

Expand All @@ -390,12 +379,12 @@ private static void DisplayResults(IPersistance persistance, ICommandLine parser
}
}

if (totalClasses > 0)
{
logger.InfoFormat("Visited Classes {0} of {1} ({2})", visitedClasses,
totalClasses, Math.Round(visitedClasses * 100.0 / totalClasses, 2));
logger.InfoFormat("Visited Methods {0} of {1} ({2})", visitedMethods,
totalMethods, Math.Round(visitedMethods * 100.0 / totalMethods, 2));
if (coverageSession.Summary.NumClasses > 0)
{
logger.InfoFormat("Visited Classes {0} of {1} ({2})", coverageSession.Summary.VisitedClasses,
coverageSession.Summary.NumClasses, Math.Round(coverageSession.Summary.VisitedClasses * 100.0 / coverageSession.Summary.NumClasses, 2));
logger.InfoFormat("Visited Methods {0} of {1} ({2})", coverageSession.Summary.VisitedMethods,
coverageSession.Summary.NumMethods, Math.Round(coverageSession.Summary.VisitedMethods * 100.0 / coverageSession.Summary.NumMethods, 2));
logger.InfoFormat("Visited Points {0} of {1} ({2})", coverageSession.Summary.VisitedSequencePoints,
coverageSession.Summary.NumSequencePoints, coverageSession.Summary.SequenceCoverage);
logger.InfoFormat("Visited Branches {0} of {1} ({2})", coverageSession.Summary.VisitedBranchPoints,
Expand Down
25 changes: 25 additions & 0 deletions main/OpenCover.Framework/Model/Summary.cs
Expand Up @@ -62,5 +62,30 @@ public class Summary
/// <remarks>Calculated using the Gendarme rules library</remarks>
[XmlAttribute("minCyclomaticComplexity")]
public int MinCyclomaticComplexity { get; set; }

/// <summary>
/// What is the number of visited classes
/// </summary>
[XmlAttribute("visitedClasses")]
public int VisitedClasses { get; set; }

/// <summary>
/// What is the total number of classes
/// </summary>
[XmlAttribute("numClasses")]
public int NumClasses { get; set; }

/// <summary>
/// What is the number of visited methods
/// </summary>
[XmlAttribute("visitedMethods")]
public int VisitedMethods { get; set; }

/// <summary>
/// What is the total number of methods
/// </summary>
[XmlAttribute("numMethods")]
public int NumMethods { get; set; }

}
}
14 changes: 14 additions & 0 deletions main/OpenCover.Framework/Persistance/BasePersistance.cs
Expand Up @@ -353,6 +353,12 @@ where @class.Methods.All(m => m.FileRef == null)
if (method.Summary.VisitedSequencePoints > 0)
method.Summary.VisitedBranchPoints += 1;

if (method.FileRef != null)
{
method.Summary.NumMethods = 1;
method.Summary.VisitedMethods = (method.Visited) ? 1 : 0;
}

AddPoints(@class.Summary, method.Summary);
CalculateCoverage(method.Summary);

Expand All @@ -368,6 +374,9 @@ where @class.Methods.All(m => m.FileRef == null)
@class.Summary.MaxCyclomaticComplexity = Math.Max(@class.Summary.MaxCyclomaticComplexity, method.CyclomaticComplexity);
}

@class.Summary.NumClasses = (@class.Summary.NumMethods > 0) ? 1 : 0; ;
@class.Summary.VisitedClasses = (@class.Summary.VisitedMethods > 0) ? 1 : 0;

AddPoints(module.Summary, @class.Summary);
CalculateCoverage(@class.Summary);

Expand Down Expand Up @@ -418,6 +427,11 @@ private static void AddPoints(Summary parent, Summary child)
parent.VisitedBranchPoints += child.VisitedBranchPoints;
parent.NumSequencePoints += child.NumSequencePoints;
parent.VisitedSequencePoints += child.VisitedSequencePoints;

parent.NumClasses += child.NumClasses;
parent.VisitedClasses += child.VisitedClasses;
parent.NumMethods += child.NumMethods;
parent.VisitedMethods += child.VisitedMethods;
}

public bool GetSequencePointsForFunction(string modulePath, int functionToken, out InstrumentationPoint[] sequencePoints)
Expand Down
39 changes: 33 additions & 6 deletions main/OpenCover.Test/Framework/Persistance/BasePersistenceTests.cs
Expand Up @@ -211,14 +211,17 @@ public void Class_Summary_Aggregates_Methods()
new Method
{
SequencePoints = new[] {new SequencePoint {VisitCount = 1}},
CyclomaticComplexity = 1
CyclomaticComplexity = 1,
Visited = true,
FileRef = new FileRef()
},
new Method
{
SequencePoints =
new[]
{new SequencePoint {VisitCount = 1}, new SequencePoint {VisitCount = 0}},
CyclomaticComplexity = 10
CyclomaticComplexity = 10,
FileRef = new FileRef()
},
new Method
{
Expand All @@ -243,7 +246,11 @@ public void Class_Summary_Aggregates_Methods()
Assert.AreEqual(2, Instance.CoverageSession.Modules[0].Classes[0].Summary.VisitedBranchPoints);
Assert.AreEqual(66.67m, Instance.CoverageSession.Modules[0].Classes[0].Summary.BranchCoverage);
Assert.AreEqual(10, Instance.CoverageSession.Modules[0].Classes[0].Summary.MaxCyclomaticComplexity);
Assert.AreEqual(1, Instance.CoverageSession.Modules[0].Classes[0].Summary.MinCyclomaticComplexity);
Assert.AreEqual(2, Instance.CoverageSession.Modules[0].Classes[0].Summary.NumMethods);
Assert.AreEqual(1, Instance.CoverageSession.Modules[0].Classes[0].Summary.VisitedMethods);
Assert.AreEqual(1, Instance.CoverageSession.Modules[0].Classes[0].Summary.NumClasses);
Assert.AreEqual(1, Instance.CoverageSession.Modules[0].Classes[0].Summary.VisitedClasses);

}


Expand Down Expand Up @@ -904,7 +911,9 @@ public void Module_Summary_Aggregates_Classes()
new Method
{
SequencePoints = new[] {new SequencePoint {VisitCount = 1}},
CyclomaticComplexity = 4
CyclomaticComplexity = 4,
Visited = true,
FileRef = new FileRef()
}
}
},
Expand All @@ -918,12 +927,16 @@ public void Module_Summary_Aggregates_Classes()
SequencePoints =
new[]
{new SequencePoint {VisitCount = 1}, new SequencePoint {VisitCount = 0}},
CyclomaticComplexity = 17
CyclomaticComplexity = 17,
Visited = true,
FileRef = new FileRef()
},
new Method
{
SequencePoints = new[] {new SequencePoint {VisitCount = 0}},
CyclomaticComplexity = 6
CyclomaticComplexity = 6,
Visited = true,
FileRef = new FileRef()
}
}
}
Expand All @@ -948,6 +961,20 @@ public void Module_Summary_Aggregates_Classes()
Assert.AreEqual(6, Instance.CoverageSession.Modules[0].Classes[1].Summary.MinCyclomaticComplexity);
Assert.AreEqual(17, Instance.CoverageSession.Modules[0].Summary.MaxCyclomaticComplexity);
Assert.AreEqual(4, Instance.CoverageSession.Modules[0].Summary.MinCyclomaticComplexity);

Assert.AreEqual(1, Instance.CoverageSession.Modules[0].Classes[0].Summary.NumMethods);
Assert.AreEqual(1, Instance.CoverageSession.Modules[0].Classes[0].Summary.VisitedMethods);
Assert.AreEqual(1, Instance.CoverageSession.Modules[0].Classes[0].Summary.NumClasses);
Assert.AreEqual(1, Instance.CoverageSession.Modules[0].Classes[0].Summary.VisitedClasses);
Assert.AreEqual(2, Instance.CoverageSession.Modules[0].Classes[1].Summary.NumMethods);
Assert.AreEqual(2, Instance.CoverageSession.Modules[0].Classes[1].Summary.VisitedMethods);
Assert.AreEqual(1, Instance.CoverageSession.Modules[0].Classes[1].Summary.NumClasses);
Assert.AreEqual(1, Instance.CoverageSession.Modules[0].Classes[1].Summary.VisitedClasses);

Assert.AreEqual(3, Instance.CoverageSession.Modules[0].Summary.NumMethods);
Assert.AreEqual(3, Instance.CoverageSession.Modules[0].Summary.VisitedMethods);
Assert.AreEqual(2, Instance.CoverageSession.Modules[0].Summary.NumClasses);
Assert.AreEqual(2, Instance.CoverageSession.Modules[0].Summary.VisitedClasses);
}

[Test]
Expand Down

0 comments on commit 633f404

Please sign in to comment.