private ReportAnalysis Read(ISymbolReader reader, ICoverageModule module) { var lines = new List<BlockLineRange>(); var result = new ReportAnalysis(); //These are unused uint id; string name; string uName; string cName; string aName; byte[] coverageBuffer = module.GetCoverageBuffer(null); while (reader.GetNextMethod(out id, out name, out uName, out cName, out aName, lines)) { var stats = CoverageInfo.GetMethodStatistics(coverageBuffer, lines); result.LinesCovered += stats.LinesCovered; result.LinesPartiallyCovered += stats.LinesPartiallyCovered; result.LinesNotCovered += stats.LinesNotCovered; lines.Clear(); } return result; }
/// <summary> /// Creates and returns the payment module version 1. /// </summary> /// <returns> /// The Payment module V1. /// </returns> public ICoverageModule GetCoverageModule() { if (coverageModule == null) { coverageModule = new CoverageModule.CoverageModule(_configuration); Type coverageLogicType = CreateTypeFromConfiguration("CoverageModule", "CoverageLogic", "OpenImis.ModulesV1.CoverageModule.Logic.CoverageLogic"); coverageModule.SetCoverageLogic((CoverageModule.Logic.ICoverageLogic)ActivatorUtilities.CreateInstance(_serviceProvider, coverageLogicType)); } return(coverageModule); }
/// <summary> /// Creates a module coverage statistics based on given coverage buffer. /// </summary> /// <param name="files">List to which instrumented files are added.</param> /// <param name="module">Information about module coverage.</param> /// <param name="lineStartId">Starting identification number for method lines.</param> /// <returns>New <see cref="ModuleStatistics"/> instance.</returns> internal static ModuleStatistics Create(FileSpecList files, ICoverageModule module, ref long lineStartId) { var moduleStats = new ModuleStatistics(module.Name, module.Signature, module.ImageSize, module.ImageLinkTime); var lines = new List<BlockLineRange>(); var coverageBuffer = module.GetCoverageBuffer(null /* tests */); using (var symbolReader = module.Symbols.CreateReader()) { uint methodId; string methodName; string undecoratedMethodName; string className; string namespaceName; while (symbolReader.GetNextMethod(out methodId, out methodName, out undecoratedMethodName, out className, out namespaceName, lines)) { var namespaceStats = moduleStats.GetOrAddNamespace(namespaceName); var classStats = namespaceStats.GetOrAddClass(className); var methodStats = MethodStatistics.Create(methodId, methodName, undecoratedMethodName, coverageBuffer, lines, files, ref lineStartId); classStats.AddMethod(methodStats); // Clear the method list to be ready for next method. lines.Clear(); } } return moduleStats; }