Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorddunne2009-09-28 17:51:28 +0000
committerddunne2009-09-28 17:51:28 +0000
commitb1ff8c354a8191c4504fb9b7fa0b80411335eeca (patch)
treeb2c20475252af19547fe4695b8d8fe706be3804c
parentfe5ff51dfac0541a3d98c15644345edb50b187bf (diff)
downloadorg.eclipse.osee-b1ff8c354a8191c4504fb9b7fa0b80411335eeca.tar.gz
org.eclipse.osee-b1ff8c354a8191c4504fb9b7fa0b80411335eeca.tar.xz
org.eclipse.osee-b1ff8c354a8191c4504fb9b7fa0b80411335eeca.zip
code coverage
-rw-r--r--org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/model/CoverageMethodEnum.java2
-rw-r--r--org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/CoverageDataFile.java85
-rw-r--r--org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/CoverageDataSubProgram.java72
-rw-r--r--org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/CoverageDataUnit.java61
-rw-r--r--org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/LineNumToBranches.java41
-rw-r--r--org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/VectorCastCoverageImporter.java18
6 files changed, 276 insertions, 3 deletions
diff --git a/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/model/CoverageMethodEnum.java b/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/model/CoverageMethodEnum.java
index 7bbcccfa3d0..e7708a1cd80 100644
--- a/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/model/CoverageMethodEnum.java
+++ b/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/model/CoverageMethodEnum.java
@@ -14,5 +14,5 @@ package org.eclipse.osee.coverage.model;
* @author Donald G. Dunne
*/
public enum CoverageMethodEnum {
- Deactivated_Code, Exception_Handling, Test_Unit, Test_Procedure, None
+ Deactivated_Code, Exception_Handling, Test_Unit, Test_Procedure, Unknown, None
}
diff --git a/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/CoverageDataFile.java b/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/CoverageDataFile.java
new file mode 100644
index 00000000000..917eee9dd68
--- /dev/null
+++ b/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/CoverageDataFile.java
@@ -0,0 +1,85 @@
+/*
+ * Created on Sep 26, 2009
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.coverage.vcast;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import org.eclipse.osee.coverage.vcast.CoverageDataUnit.CoverageDataType;
+import org.eclipse.osee.framework.jdk.core.util.AFile;
+import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class CoverageDataFile {
+
+ public List<CoverageDataUnit> coverageDataUnits = new ArrayList<CoverageDataUnit>();
+ private static final Pattern lineNumToBranchesPattern = Pattern.compile("\\{([0-9]+);\\s*([0-9]+)\\}");
+
+ public CoverageDataFile(String vcastDirectory) {
+
+ File coverageDataFile = new File(vcastDirectory + "/vcast/coverage_data.xml");
+ if (!coverageDataFile.exists()) {
+ throw new IllegalArgumentException(String.format("VectorCast coverage_data.xml file doesn't exist [%s]",
+ vcastDirectory));
+ }
+ String fileStr = AFile.readFile(coverageDataFile);
+ try {
+ Document document = Jaxp.readXmlDocument(fileStr);
+ List<Element> unitElements = Jaxp.findElements(document.getDocumentElement(), "unit");
+ for (Element unitElement : unitElements) {
+ CoverageDataUnit coverageDataUnit = new CoverageDataUnit(Jaxp.getChildText(unitElement, "name"));
+ coverageDataUnit.setIndex(new Integer(unitElement.getAttribute("index")).intValue());
+ coverageDataUnit.setCoverageType(CoverageDataType.valueOf(unitElement.getAttribute("coverage_type")));
+
+ List<Element> subprograms = Jaxp.findElements(unitElement, "subprogram");
+ for (Element subprogram : subprograms) {
+ String subprogramName = Jaxp.getChildText(subprogram, "name");
+ CoverageDataSubProgram coverageDataSubProgram = new CoverageDataSubProgram(subprogramName);
+ String lineNumbersToBranches = Jaxp.getChildText(subprogram, "line_numbers_to_branches");
+ Matcher m = lineNumToBranchesPattern.matcher(lineNumbersToBranches);
+ while (m.find()) {
+ // Don't know what to do with >0 branches yet; assume branch coverage (future)
+ if (!m.group(2).equals("0")) {
+ System.out.println(String.format("Unhandled branches [%s] for lineNum [%s] subprogram [%s]",
+ m.group(1), m.group(1), subprogramName));
+ }
+ coverageDataSubProgram.addLineNumToBranches(new Integer(m.group(1)).intValue(), new Integer(
+ m.group(2)));
+ }
+
+ Element metricsElement = Jaxp.getChild(subprogram, "metrics");
+ String complexity = Jaxp.getChildText(metricsElement, "complexity");
+ Element coverageElement = Jaxp.getChild(metricsElement, "coverage");
+ if (!coverageElement.getAttribute("coverage_type").equals("STATEMENT")) {
+ System.out.println(String.format("Unhandled coverage_type [%s] for subprogram [%s]. Skipping",
+ coverageElement.getAttribute("coverage_type"), subprogramName));
+ continue;
+ }
+ String coveredElement = Jaxp.getChildText(coverageElement, "covered");
+ String totalElement = Jaxp.getChildText(coverageElement, "total");
+ coverageDataSubProgram.setComplexity(new Integer(complexity).intValue());
+ coverageDataSubProgram.setCovered(new Integer(coveredElement).intValue());
+ coverageDataSubProgram.setTotal(new Integer(totalElement).intValue());
+ coverageDataUnit.addSubProgram(coverageDataSubProgram);
+ }
+ coverageDataUnits.add(coverageDataUnit);
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public List<CoverageDataUnit> getCoverageDataUnits() {
+ return coverageDataUnits;
+ }
+}
diff --git a/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/CoverageDataSubProgram.java b/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/CoverageDataSubProgram.java
new file mode 100644
index 00000000000..b780a2f70f3
--- /dev/null
+++ b/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/CoverageDataSubProgram.java
@@ -0,0 +1,72 @@
+/*
+ * Created on Sep 27, 2009
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.coverage.vcast;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class CoverageDataSubProgram {
+
+ private final String name;
+ private int executionLines;
+ private int complexity;
+ private int covered;
+ private int total;
+ private final List<LineNumToBranches> lineNumToBranches = new ArrayList<LineNumToBranches>();
+
+ public CoverageDataSubProgram(String name) {
+ super();
+ this.name = name;
+ }
+
+ public int getExecutionLines() {
+ return executionLines;
+ }
+
+ public void setExecutionLines(int executionLines) {
+ this.executionLines = executionLines;
+ }
+
+ public int getComplexity() {
+ return complexity;
+ }
+
+ public void setComplexity(int complexity) {
+ this.complexity = complexity;
+ }
+
+ public int getCovered() {
+ return covered;
+ }
+
+ public void setCovered(int covered) {
+ this.covered = covered;
+ }
+
+ public int getTotal() {
+ return total;
+ }
+
+ public void setTotal(int total) {
+ this.total = total;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void addLineNumToBranches(int lineNum, int branches) {
+ lineNumToBranches.add(new LineNumToBranches(lineNum, branches));
+ }
+
+ public List<LineNumToBranches> getLineNumToBranches() {
+ return lineNumToBranches;
+ }
+
+}
diff --git a/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/CoverageDataUnit.java b/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/CoverageDataUnit.java
new file mode 100644
index 00000000000..3119648c180
--- /dev/null
+++ b/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/CoverageDataUnit.java
@@ -0,0 +1,61 @@
+/*
+ * Created on Sep 27, 2009
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.coverage.vcast;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class CoverageDataUnit {
+
+ public static enum CoverageDataType {
+ STATEMENT, BRANCH
+ };
+ public String name;
+ public int index;
+ public CoverageDataType coverageType;
+ public List<CoverageDataSubProgram> subPrograms = new ArrayList<CoverageDataSubProgram>();
+
+ public CoverageDataUnit(String name) {
+ super();
+ this.name = name;
+ }
+
+ public int getIndex() {
+ return index;
+ }
+
+ public void setIndex(int index) {
+ this.index = index;
+ }
+
+ public CoverageDataType getCoverageType() {
+ return coverageType;
+ }
+
+ public void setCoverageType(CoverageDataType coverageType) {
+ this.coverageType = coverageType;
+ }
+
+ public void addSubProgram(CoverageDataSubProgram coverageDataSubProgram) {
+ subPrograms.add(coverageDataSubProgram);
+ }
+
+ public List<CoverageDataSubProgram> getSubPrograms() {
+ return subPrograms;
+ }
+
+ @Override
+ public String toString() {
+ return name;
+ }
+
+ public String getName() {
+ return name;
+ }
+}
diff --git a/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/LineNumToBranches.java b/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/LineNumToBranches.java
new file mode 100644
index 00000000000..a2b4b76ed70
--- /dev/null
+++ b/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/LineNumToBranches.java
@@ -0,0 +1,41 @@
+/*
+ * Created on Sep 28, 2009
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.coverage.vcast;
+
+
+/**
+ * @author Donald G. Dunne
+ */
+public class LineNumToBranches {
+
+ private int lineNum;
+ private int branches;
+
+ public LineNumToBranches() {
+ }
+
+ public LineNumToBranches(int lineNum, int branches) {
+ this.lineNum = lineNum;
+ this.branches = branches;
+ }
+
+ public int getLineNum() {
+ return lineNum;
+ }
+
+ public void setLineNum(int lineNum) {
+ this.lineNum = lineNum;
+ }
+
+ public int getBranches() {
+ return branches;
+ }
+
+ public void setBranches(int branches) {
+ this.branches = branches;
+ }
+
+}
diff --git a/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/VectorCastCoverageImporter.java b/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/VectorCastCoverageImporter.java
index f8ec209b0a0..7da6783816b 100644
--- a/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/VectorCastCoverageImporter.java
+++ b/org.eclipse.osee.coverage/src/org/eclipse/osee/coverage/vcast/VectorCastCoverageImporter.java
@@ -49,8 +49,22 @@ public class VectorCastCoverageImporter implements ICoverageImporter {
coverageImport.getLog().logError(String.format("VectorCast directory doesn't exist [%s]", vcastDirectory));
return coverageImport;
}
- coverageImport.getLog().logError("Changing code to read info out of coverate_data.xml");
-
+ CoverageDataFile coverageDataFile = new CoverageDataFile(vcastDirectory);
+ CoverageImport coverageImport = new CoverageImport();
+ for (CoverageDataUnit coverageDataUnit : coverageDataFile.coverageDataUnits) {
+ CoverageUnit coverageUnit = new CoverageUnit(null, coverageDataUnit.getName(), "");
+ coverageImport.addCoverageUnit(coverageUnit);
+ for (CoverageDataSubProgram coverageDataSubProgram : coverageDataUnit.getSubPrograms()) {
+ CoverageUnit childCoverageUnit = new CoverageUnit(coverageUnit, coverageDataSubProgram.getName(), "");
+ coverageUnit.addCoverageUnit(childCoverageUnit);
+ for (LineNumToBranches lineNumToBranches : coverageDataSubProgram.getLineNumToBranches()) {
+ CoverageItem coverageItem =
+ new CoverageItem(childCoverageUnit, CoverageMethodEnum.Unknown,
+ String.valueOf(lineNumToBranches.getLineNum()));
+ childCoverageUnit.addCoverageItem(coverageItem);
+ }
+ }
+ }
return coverageImport;
}

Back to the top