Exemple #1
0
        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;
        }
Exemple #3
0
        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;
		}