public void AddClass(ClassElement e) { _elements.Add(e); }
public ProjectElement Parse(String[] inputfiles) { ProjectElement PROJECT = new ProjectElement("new_project", 123323230); // Open file using (CoverageInfo info = JoinCoverageFiles(inputfiles)) { CoverageDS dataSet = info.BuildDataSet(); Dictionary<String, PackageElement> packages = new Dictionary<String, PackageElement>(); Dictionary<uint, FileElement> files = new Dictionary<uint, FileElement>(); // Namespaces DataTable namespacesTable = dataSet.Tables["NameSpaceTable"]; DataTable classesTable = dataSet.Tables["Class"]; DataTable filesTable = dataSet.Tables["SourceFileNames"]; CreateIndexPackages(PROJECT, namespacesTable, packages); CreateIndexFiles(filesTable, files); foreach(DataRow iclass in classesTable.Rows) { DataRow[] childRows = iclass.GetChildRows("Class_Method"); // Since it's one class per file (at least) declare // file here and add it to the class. uint fileid = 0; // uint classlocs = 0; uint covered_methods = 0; FileElement fe = null; foreach(DataRow imethod in childRows) { // Method starting line uint linenum = 0; // Get First Line in class DataRow[] childRows2 = imethod.GetChildRows("Method_Lines"); //if(childRows2.Length > 0) foreach(DataRow iline in childRows2) { LineElement le = null; uint coverage = iline.Field<uint>("Coverage"); if (linenum == 0) { fileid = iline.Field<uint>("SourceFileID"); string methodname = System.Security.SecurityElement.Escape((string)imethod["MethodName"]); linenum = iline.Field<uint>("LnStart"); le = new LineElement(linenum, "method", methodname, coverage); } else { linenum = iline.Field<uint>("LnStart"); le = new LineElement(linenum, "stmt", "", coverage); } // If the file doesn't exists in our report, we'll // just ignore this information if (files.ContainsKey(fileid)) { fe = files[fileid]; fe.AddLine(le); } } // Count how many methods covered we have if ((uint)imethod["LinesCovered"] > 0) covered_methods++; } uint totallines = (uint)iclass["LinesCovered"] + (uint)iclass["LinesNotCovered"] + (uint)iclass["LinesPartiallyCovered"]; uint complexity = 1; uint methods = (uint)childRows.Length; uint statements = totallines - methods; uint covered_statements = (uint)iclass["LinesCovered"] - covered_methods; uint conditionals = 0; uint covered_conditionals = 0; ClassElement ce = new ClassElement (System.Security.SecurityElement.Escape((string)iclass["ClassName"])); ce.Metrics = new ClassMetrics(complexity, statements, covered_statements, conditionals, covered_conditionals, methods, covered_methods); if (fe != null) { if (!fe.GetClasses().Contains(ce)) { fe.AddClass(ce); } if (packages.ContainsKey((string)iclass["NamespaceKeyName"])) { PackageElement pe = packages[(string)iclass["NamespaceKeyName"]]; if (!pe.GetFiles().Contains(fe)) { pe.AddFile(fe); } } } } } return PROJECT; }
public void AddClass(ClassElement e) { _classes.Add(e); }
public ProjectElement Parse(String[] inputfiles) { ProjectElement PROJECT = new ProjectElement("new_project", 123323230); // Open file using (CoverageInfo info = JoinCoverageFiles(inputfiles)) { CoverageDS dataSet = info.BuildDataSet(); Dictionary<String, PackageElement> packages = new Dictionary<String, PackageElement>(); Dictionary<uint, FileElement> files = new Dictionary<uint, FileElement>(); // Namespaces DataTable namespacesTable = dataSet.Tables["NameSpaceTable"]; DataTable classesTable = dataSet.Tables["Class"]; DataTable filesTable = dataSet.Tables["SourceFileNames"]; CreateIndexPackages(PROJECT, namespacesTable, packages); CreateIndexFiles(filesTable, files); foreach (DataRow iclass in classesTable.Rows) { DataRow[] classMethods = iclass.GetChildRows("Class_Method"); uint methods = 0; uint covered_methods = 0; uint statements = 0; uint covered_statements = 0; // Since it's one class per file (at least) declare // file here and add it to the class. uint fileid = 0; FileElement fe = null; foreach (DataRow imethod in classMethods) { DataRow[] methodLines = imethod.GetChildRows("Method_Lines"); for (int i = 0; i < methodLines.Length; i++) { DataRow iline = methodLines[i]; if (fileid == 0) { fileid = iline.Field<uint>("SourceFileID"); if (files.ContainsKey(fileid)) { fe = files[fileid]; } } if (fe == null) continue; uint linenum = iline.Field<uint>("LnStart"); uint coverage = iline.Field<uint>("Coverage"); uint visits = coverage < 2 ? (uint)1 : 0; string methodname = null; string type = null; if (i == 0) { type = "method"; methodname = System.Security.SecurityElement.Escape((string)imethod["MethodName"]); methods++; if ((uint)imethod["LinesCovered"] > 0) { covered_methods++; } } else { type = "stmt"; statements++; if (visits > 0) { covered_statements++; } } LineElement le = fe.GetLine(linenum, type); if (le != null) { le.Coverage += visits; } else { fe.AddLine(new LineElement(linenum, type, methodname, visits)); } } } if (fe != null) { ClassElement ce = new ClassElement(System.Security.SecurityElement.Escape((string)iclass["ClassName"])); ce.Metrics = new ClassMetrics(1, statements, covered_statements, 0, 0, methods, covered_methods); fe.AddClass(ce); if (packages.ContainsKey((string)iclass["NamespaceKeyName"])) { PackageElement pe = packages[(string)iclass["NamespaceKeyName"]]; pe.AddFile(fe); } } } } return PROJECT; }