public List <FileCoverageData> GenerateSourceFiles(XDocument document) { var files = new List <FileCoverageData>(); if (document.Root != null) { var xElement = document.Root.Element("modules"); if (xElement != null) { foreach (var module in xElement.Elements("module")) { var filesElement = module.Element("source_files"); if (filesElement != null) { foreach (var file in filesElement.Elements("source_file")) { var fileid = file.Attribute("id").Value; var fullPath = file.Attribute("path").Value; var coverageBuilder = new FileCoverageDataBuilder(fullPath); var classesElement = module.Element("functions"); if (classesElement != null) { foreach (var @class in classesElement.Elements("function")) { var ranges = @class.Element("ranges"); if (ranges != null) { foreach (var range in ranges.Elements("range")) { var rangeFileId = range.Attribute("source_id").Value; if (fileid == rangeFileId) { var sourceStartLine = int.Parse(range.Attribute("start_line").Value); var sourceEndLine = int.Parse(range.Attribute("end_line").Value); var covered = range.Attribute("covered").Value == "yes"; foreach ( var lineNumber in Enumerable.Range(sourceStartLine, sourceEndLine - sourceStartLine + 1)) { coverageBuilder.RecordCoverage(lineNumber, covered ? 1 : 0); } } } } } } files.Add(coverageBuilder.CreateFile()); } } } } } return(files); }
public List<FileCoverageData> GenerateSourceFiles(XDocument document) { var files = new List<FileCoverageData>(); if (document.Root != null) { var xElement = document.Root.Element("modules"); if (xElement != null) foreach (var module in xElement.Elements("module")) { var filesElement = module.Element("source_files"); if (filesElement != null) { foreach (var file in filesElement.Elements("source_file")) { var fileid = file.Attribute("id").Value; var fullPath = file.Attribute("path").Value; var coverageBuilder = new FileCoverageDataBuilder(fullPath); var classesElement = module.Element("functions"); if (classesElement != null) { foreach (var @class in classesElement.Elements("function")) { var ranges = @class.Element("ranges"); if (ranges != null) { foreach (var range in ranges.Elements("range")) { var rangeFileId = range.Attribute("source_id").Value; if (fileid == rangeFileId) { var sourceStartLine = int.Parse(range.Attribute("start_line").Value); var sourceEndLine = int.Parse(range.Attribute("end_line").Value); var covered = range.Attribute("covered").Value == "yes"; foreach ( var lineNumber in Enumerable.Range(sourceStartLine, sourceEndLine - sourceStartLine + 1)) { coverageBuilder.RecordCoverage(lineNumber, covered ? 1 : 0); } } } } } } files.Add(coverageBuilder.CreateFile()); } } } } return files; }
public List <FileCoverageData> GenerateSourceFiles(XDocument document) { var files = new List <FileCoverageData>(); if (document.Root != null) { var sourceFilesInfo = new Dictionary <string, string>(); foreach (var sourceFile in document.Root.Elements("SourceFileNames")) { var idElement = sourceFile.Element("SourceFileID"); if (idElement == null) { continue; } var id = idElement.Value; var fileNameElement = sourceFile.Element("SourceFileName"); if (fileNameElement == null) { continue; } var fileName = fileNameElement.Value; sourceFilesInfo.Add(id, fileName); } foreach (var module in document.Root.Elements("Module")) { foreach (var sourceFileInfo in sourceFilesInfo) { var fileId = sourceFileInfo.Key; var fullPath = sourceFileInfo.Value; var coverageBuilder = new FileCoverageDataBuilder(fullPath); var namespaceTable = module.Element("NamespaceTable"); if (namespaceTable == null) { continue; } foreach (var @class in namespaceTable.Elements("Class")) { foreach (var method in @class.Elements("Method")) { foreach (var lines in method.Elements("Lines")) { var sourceFileIdElement = lines.Element("SourceFileID"); if (sourceFileIdElement == null) { continue; } var sourceFileId = sourceFileIdElement.Value; if (sourceFileId != fileId) { continue; } var sourceStartLineElement = lines.Element("LnStart"); if (sourceStartLineElement == null) { continue; } var sourceStartLine = int.Parse(sourceStartLineElement.Value); var sourceEndLineElement = lines.Element("LnEnd"); if (sourceEndLineElement == null) { continue; } var sourceEndLine = int.Parse(sourceEndLineElement.Value); var coveredElement = lines.Element("Coverage"); if (coveredElement == null) { continue; } // A value of 2 means completely covered var covered = coveredElement.Value == "2"; for (int lineNumber = sourceStartLine; lineNumber <= sourceEndLine; lineNumber++) { coverageBuilder.RecordCoverage(lineNumber, covered ? 1 : 0); } } } } files.Add(coverageBuilder.CreateFile()); } } } return(files); }
public List <FileCoverageData> GenerateSourceFiles(XDocument document) { var files = new List <FileCoverageData>(); if (document.Root != null) { var xElement = document.Root.Element("Modules"); if (xElement != null) { foreach (var module in xElement.Elements("Module")) { var attribute = module.Attribute("skippedDueTo"); if (attribute == null || string.IsNullOrEmpty(attribute.Value)) { var filesElement = module.Element("Files"); if (filesElement != null) { foreach (var file in filesElement.Elements("File")) { var fileid = file.Attribute("uid").Value; var fullPath = file.Attribute("fullPath").Value; var coverageBuilder = new FileCoverageDataBuilder(fullPath); var classesElement = module.Element("Classes"); if (classesElement != null) { foreach (var @class in classesElement.Elements("Class")) { var methods = @class.Element("Methods"); if (methods != null) { foreach (var method in methods.Elements("Method")) { var sequencePointsElement = method.Element("SequencePoints"); if (sequencePointsElement != null) { foreach (var sequencePoint in sequencePointsElement.Elements("SequencePoint")) { var sequenceFileid = sequencePoint.Attribute("fileid").Value; if (fileid == sequenceFileid) { var sourceLine = int.Parse(sequencePoint.Attribute("sl").Value); var visitCount = int.Parse(sequencePoint.Attribute("vc").Value); coverageBuilder.RecordCoverage(sourceLine, visitCount); } } } } } } } files.Add(coverageBuilder.CreateFile()); } } } } } } return(files); }
public List<FileCoverageData> GenerateSourceFiles(XDocument document) { var files = new List<FileCoverageData>(); if (document.Root != null) { var xElement = document.Root.Element("Modules"); if (xElement != null) { foreach (var module in xElement.Elements("Module")) { var attribute = module.Attribute("skippedDueTo"); if (attribute == null || string.IsNullOrEmpty(attribute.Value)) { var filesElement = module.Element("Files"); if (filesElement != null) { foreach (var file in filesElement.Elements("File")) { var fileid = file.Attribute("uid").Value; var fullPath = file.Attribute("fullPath").Value; var coverageBuilder = new FileCoverageDataBuilder(fullPath); var classesElement = module.Element("Classes"); if (classesElement != null) { foreach (var @class in classesElement.Elements("Class")) { var methods = @class.Element("Methods"); if (methods != null) { foreach (var method in methods.Elements("Method")) { var sequencePointsElement = method.Element("SequencePoints"); if (sequencePointsElement != null) { foreach (var sequencePoint in sequencePointsElement.Elements("SequencePoint")) { var sequenceFileid = sequencePoint.Attribute("fileid").Value; if (fileid == sequenceFileid) { var sourceLine = int.Parse(sequencePoint.Attribute("sl").Value); var visitCount = int.Parse(sequencePoint.Attribute("vc").Value); coverageBuilder.RecordCoverage(sourceLine, visitCount); } } } } } } } files.Add(coverageBuilder.CreateFile()); } } } } } } return files; }