[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r20891 - in monkey/branches/MonkeyBacktracking/monkey/Monke
From: |
gnunet |
Subject: |
[GNUnet-SVN] r20891 - in monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator: . src/org/monkey/comparator src/org/monkey/comparator/bo src/org/monkey/comparator/testing src/org/monkey/comparator/testing/refs |
Date: |
Tue, 3 Apr 2012 23:18:55 +0200 |
Author: safey
Date: 2012-04-03 23:18:55 +0200 (Tue, 03 Apr 2012)
New Revision: 20891
Added:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/BugComparator.java
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Constants.java
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Feature.java
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/GeneralPropertiesFeature.java
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/MonkeyComparator.java
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/StackTraceFeature.java
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Util.java
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/ComparatorTest.java
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey.xml
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_common_and_different_exp.xml
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_fname.xml
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_trace.xml
Removed:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Comparator.java
Modified:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/.classpath
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/bo/Bug.java
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/bo/XMLParser.java
Log:
Monkey Bug Comparator: Parsing, comparing bugs general properties feature,
comparing bugs stack trace feature, JUnit test case for gp feature and stack
trace feature
Modified:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/.classpath
===================================================================
--- monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/.classpath
2012-04-03 15:41:27 UTC (rev 20890)
+++ monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/.classpath
2012-04-03 21:18:55 UTC (rev 20891)
@@ -2,5 +2,6 @@
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con"
path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Added:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/BugComparator.java
===================================================================
---
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/BugComparator.java
(rev 0)
+++
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/BugComparator.java
2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,30 @@
+package org.monkey.comparator;
+
+import java.util.ArrayList;
+
+public class BugComparator {
+ private static ArrayList<Feature> featureList = new
ArrayList<Feature>();
+
+ public static boolean register(Feature feature) {
+ featureList.add(feature);
+ return true;
+ }
+
+ public static boolean unregister(Feature feature) {
+ featureList.remove(feature);
+ return true;
+ }
+
+ public static double calculateScore() {
+ double totalScore = 0;
+ double featureScore;
+ Feature feature;
+ for (int i = 0; i < featureList.size(); i++) {
+ feature = featureList.get(i);
+ featureScore = feature.score();
+ System.out.println(feature.getFeatureName() + " score =
" + featureScore);
+ totalScore += featureScore;
+ }
+ return totalScore;
+ }
+}
Property changes on:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/BugComparator.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Deleted:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Comparator.java
===================================================================
---
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Comparator.java
2012-04-03 15:41:27 UTC (rev 20890)
+++
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Comparator.java
2012-04-03 21:18:55 UTC (rev 20891)
@@ -1,17 +0,0 @@
-package org.monkey.comparator;
-
-import org.monkey.comparator.bo.Bug;
-import org.monkey.comparator.bo.XMLParser;
-
-public class Comparator {
- public static float compareBugs(Bug bugA, Bug bugB) {
- float similarityPercentage = 0;
- return similarityPercentage;
- }
- public static void main(String[] args) {
- if (null == args[0])
- System.err.println("Error: Missing XML file path!");
- Bug bug = XMLParser.parse(args[0]);
- XMLParser.printBug(bug);
- }
-}
Added:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Constants.java
===================================================================
---
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Constants.java
(rev 0)
+++
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Constants.java
2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,26 @@
+package org.monkey.comparator;
+
+public abstract class Constants {
+ public static final int LINE_NUMBER_DIFFERENCE_THRESHOLD = 10;
+
+ /* Features' scores */
+ public static final double GENERAL_PROPERTIES_FEATURE_SCORE = 100;
+ public static final double STACK_TRACE_FEATURE_SCORE = 50;
+
+ /* Weights for feature: Bug General Properties */
+ public static final double LINE_NUMBER_WEIGHT = 0.25;
+ public static final double BUG_FUNCTION_NAME_WEIGHT = 0.25;
+ public static final double FILE_NAME_WEIGHT = 0.5;
+
+ /* Weights for feature: Stack-Trace */
+ public static final double FUNCTION_SEMANTICS_WEIGHT = 0.1; // Weight
of all function semantics in the stack-trace (function name, file name, line
number)
+ public static final double EXPRESSIONS_WEIGHT = 0.9; // Weight of all
expressions in the stack-trace
+
+ public static final double FUNCTION_NAME_WEIGHT = 0.25; // Within the
function semantics
+ public static final double FUNCTION_LINE_WEIGHT = 0.25;
+ public static final double FUNCTION_FILE_NAME = 0.5;
+
+ public static final double EXPRESSION_SYTNAX_WEIGHT = 0.7; // Within
the expressions of the function
+ public static final double EXPRESSION_VALUE_WEIGHT = 0.3;
+
+}
Property changes on:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Constants.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Feature.java
===================================================================
---
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Feature.java
(rev 0)
+++
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Feature.java
2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,21 @@
+package org.monkey.comparator;
+
+import org.monkey.comparator.bo.Bug;
+
+public abstract class Feature {
+ protected Bug bugA;
+ protected Bug bugB;
+ protected String featureName = "Feature";
+ protected double featureTotalScore = 0;
+
+ public Feature (Bug bugA, Bug bugB, double featureTotalScore) {
+ this.bugA = bugA;
+ this.bugB = bugB;
+ this.featureTotalScore = featureTotalScore;
+ }
+
+ protected abstract String getFeatureName();
+ protected abstract void assignScorePoints();
+ public abstract double score();
+}
+
Property changes on:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Feature.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/GeneralPropertiesFeature.java
===================================================================
---
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/GeneralPropertiesFeature.java
(rev 0)
+++
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/GeneralPropertiesFeature.java
2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,48 @@
+package org.monkey.comparator;
+
+import org.monkey.comparator.bo.Bug;
+
+public class GeneralPropertiesFeature extends Feature {
+ private static double lineNumberScore;
+ private static double functionNameScore;
+ private static double fileNameScore;
+
+ public GeneralPropertiesFeature(Bug bugA, Bug bugB, double
featureTotalScore) {
+ super(bugA, bugB, featureTotalScore);
+ featureName = "Feature: Bug General Properties";
+ }
+
+ private double compareGeneralProperties() {
+ double score = 0;
+ if (bugA.getFileName().equals(bugB.getFileName()))
+ score += fileNameScore;
+ if (bugA.getFunctionName().equals(bugB.getFunctionName()))
+ score += functionNameScore;
+ if (bugA.getLineNo() == bugB.getLineNo()) {
+ score += lineNumberScore;
+ } else {
+ score +=
Util.weightLineNumberDifference(bugA.getLineNo(), bugB.getLineNo()) *
lineNumberScore;
+ }
+
+ return score;
+ }
+
+ @Override
+ public double score() {
+ assignScorePoints();
+ return compareGeneralProperties();
+ }
+
+ @Override
+ protected void assignScorePoints() {
+ lineNumberScore = Constants.LINE_NUMBER_WEIGHT *
featureTotalScore;
+ functionNameScore = Constants.BUG_FUNCTION_NAME_WEIGHT *
featureTotalScore;
+ fileNameScore = Constants.FILE_NAME_WEIGHT * featureTotalScore;
+ }
+
+ @Override
+ protected String getFeatureName() {
+ return featureName;
+ }
+
+}
Property changes on:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/GeneralPropertiesFeature.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Copied:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/MonkeyComparator.java
(from rev 19728,
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Comparator.java)
===================================================================
---
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/MonkeyComparator.java
(rev 0)
+++
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/MonkeyComparator.java
2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,42 @@
+package org.monkey.comparator;
+
+import org.monkey.comparator.bo.Bug;
+import org.monkey.comparator.bo.XMLParser;
+
+public class MonkeyComparator {
+ public static double compareBugs(Bug bugA, Bug bugB) {
+ double similarityPercentage = 0;
+ double totalScore = Constants.GENERAL_PROPERTIES_FEATURE_SCORE
+ Constants.STACK_TRACE_FEATURE_SCORE;
+
+ /* Register comparison features and start comparison */
+ Feature generalPropertiesFeature = new
GeneralPropertiesFeature(bugA, bugB,
Constants.GENERAL_PROPERTIES_FEATURE_SCORE);
+ Feature stackTraceFeature = new StackTraceFeature(bugA, bugB,
Constants.STACK_TRACE_FEATURE_SCORE);
+
+ BugComparator.register(generalPropertiesFeature);
+ BugComparator.register(stackTraceFeature);
+ similarityPercentage = (BugComparator.calculateScore() /
totalScore) * 100;
+
+ /* Cleanup */
+ BugComparator.unregister(generalPropertiesFeature);
+ BugComparator.unregister(stackTraceFeature);
+
+ return similarityPercentage;
+ }
+ public static void main(String[] args) {
+
+ if (null == args[0]) {
+ System.err.println("Error: Missing paths to input
files!");
+ return;
+ }
+ if (null == args[1]) {
+ System.err.println("Error: Missing path to the second
input file!");
+ }
+
+ Bug bugA = XMLParser.parse(args[0]);
+ Bug bugB = XMLParser.parse(args[1]);
+ //XMLParser.printBug(bugA);
+ //XMLParser.printBug(bugB);
+
+ System.out.println("Similarity Percentage = " +
compareBugs(bugA, bugB));
+ }
+}
Added:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/StackTraceFeature.java
===================================================================
---
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/StackTraceFeature.java
(rev 0)
+++
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/StackTraceFeature.java
2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,157 @@
+package org.monkey.comparator;
+
+
+import org.monkey.comparator.bo.Bug;
+import org.monkey.comparator.bo.Epoch;
+import org.monkey.comparator.bo.Expression;
+import org.monkey.comparator.bo.Function;
+
+public class StackTraceFeature extends Feature {
+ private double functionNameScore;
+ private double functionLineNumberScore;
+ private double functionFileNameScore;
+ private double expressionSyntaxScore;
+ private double expressionValueScore;
+ private int functionNum;
+ private int expressionNum;
+
+ public StackTraceFeature(Bug bugA, Bug bugB, double featureTotalScore) {
+ super(bugA, bugB, featureTotalScore);
+ featureName = "Feature: Stack-Trace";
+ }
+
+ private double compareFunctions() {
+ int numFunctionA = bugA.getEpoch(0).getFunctionNum();
+ int numFunctionB = bugB.getEpoch(0).getFunctionNum();
+
+ if (numFunctionA >= numFunctionB)
+ return doCompareFunctions(bugB.getEpoch(0),
bugA.getEpoch(0));
+ return doCompareFunctions(bugA.getEpoch(0), bugB.getEpoch(0));
+ }
+
+ private double doCompareFunctions(Epoch shorterEpoch, Epoch
longerEpoch) {
+ double functionsScore = 0;
+ double expressionsScore = 0;
+ double tmpExpressionScore = 0;
+
+ int numFunctionShorter = shorterEpoch.getFunctionNum();
+ int numFunctionLonger = longerEpoch.getFunctionNum();
+ Function functionShorterEpoch;
+ Function functionLongerEpoch;
+ for (int i = 0; i < numFunctionShorter; i++) {
+ functionShorterEpoch = shorterEpoch.getFunction(i);
+ for (int j = 0; j < numFunctionLonger; j++) {
+ functionLongerEpoch =
longerEpoch.getFunction(j);
+
+ tmpExpressionScore =
compareExpressions(functionShorterEpoch, functionLongerEpoch);
+ expressionsScore += tmpExpressionScore;
+ if (tmpExpressionScore > 0) {
+ if (functionShorterEpoch.getLineNo() ==
functionLongerEpoch.getLineNo()) {
+ functionsScore +=
functionLineNumberScore;
+ } else {
+ /* If there is some similarity
in expressions,
+ * but function line numbers
are not the same,
+ * score for function line
numbers should NOT be zero */
+ functionsScore +=
Util.weightLineNumberDifference(functionShorterEpoch.getLineNo(),
functionLongerEpoch.getLineNo())
+ *
functionLineNumberScore;
+ }
+
if(functionShorterEpoch.getFileName().equals(functionLongerEpoch.getFileName()))
+ functionsScore +=
functionFileNameScore;
+
if(functionShorterEpoch.getFunctionName().equals(functionLongerEpoch.getFunctionName()))
+ functionsScore +=
functionNameScore;
+ break;
+ }
+ }
+ }
+ return functionsScore + expressionsScore;
+ }
+
+ private double compareExpressions(Function functionA, Function
functionB) {
+ int numExpressionA = functionA.getExpressionNum();
+ int numExpressionB = functionB.getExpressionNum();
+
+ if (numExpressionA >= numExpressionB)
+ return doCompareExpressions(functionB, functionA);
+ return doCompareExpressions(functionA, functionB);
+ }
+
+ private double doCompareExpressions(Function shorterFunction, Function
longerFunction) {
+ double expressionsScore = 0;
+ int numExpressionShorter = shorterFunction.getExpressionNum();
+ int numExpressionLonger = longerFunction.getExpressionNum();
+
+ Expression expressionShorterFunction;
+ Expression expressionLongerFunction;
+ for (int i = 0; i < numExpressionShorter; i++) {
+ expressionShorterFunction =
shorterFunction.getExpression(i);
+ for (int j = 0; j < numExpressionLonger; j++) {
+ expressionLongerFunction =
longerFunction.getExpression(j);
+ if
(expressionShorterFunction.getName().equals(expressionLongerFunction.getName()))
{
+ expressionsScore +=
expressionSyntaxScore;
+ if
(expressionShorterFunction.getValue().equals(expressionLongerFunction.getValue()))
+ expressionsScore +=
expressionValueScore;
+ break; // break inner loop
+ }
+ }
+ }
+
+ return expressionsScore;
+ }
+
+ @Override
+ public double score() {
+ assignScorePoints();
+ return compareFunctions();
+ }
+
+ @Override
+ protected void assignScorePoints() {
+
+ int functionNumA = bugA.getEpoch(0).getFunctionNum();
+ int functionNumB = bugB.getEpoch(0).getFunctionNum();
+ functionNum = functionNumA >= functionNumB ? functionNumA :
functionNumB; // taking the larger number of functions of the two stack traces
+
+ Function function;
+ int expressionNumA = 0;
+ for (int i = 0; i < functionNumA; i++) {
+ function = bugA.getEpoch(0).getFunction(i);
+ expressionNumA += function.getExpressionNum();
+ }
+
+ int expressionNumB = 0;
+ for (int i = 0; i < functionNumB; i++) {
+ function = bugB.getEpoch(0).getFunction(i);
+ expressionNumB += function.getExpressionNum();
+ }
+
+ expressionNum = expressionNumA >= expressionNumB ?
expressionNumA : expressionNumB; // taking the larger number of expressions of
the two stack traces
+
+
+ double allFunctionSemanticsScore =
Constants.FUNCTION_SEMANTICS_WEIGHT * featureTotalScore;
+ double singleFunctionSemanticsScore =
(double)allFunctionSemanticsScore / (double)functionNum;
+ double allExpressionsScore = Constants.EXPRESSIONS_WEIGHT *
featureTotalScore;
+ double singleExpressionScore = (double)allExpressionsScore /
(double)expressionNum;
+
+ /* Scoring for function semantics details */
+ functionNameScore = Constants.FUNCTION_NAME_WEIGHT
*singleFunctionSemanticsScore;
+ functionFileNameScore = Constants.FUNCTION_FILE_NAME *
singleFunctionSemanticsScore;
+ functionLineNumberScore = Constants.FUNCTION_LINE_WEIGHT *
singleFunctionSemanticsScore;
+
+ /* Scoring for expression semantics details */
+ expressionSyntaxScore = Constants.EXPRESSION_SYTNAX_WEIGHT *
singleExpressionScore;
+ expressionValueScore = Constants.EXPRESSION_VALUE_WEIGHT *
singleExpressionScore;
+ }
+
+
+ @Override
+ protected String getFeatureName() {
+ return featureName;
+ }
+
+ /*
+ private double testTotalScore() {
+ return ((functionNameScore + functionFileNameScore +
functionLineNumberScore) * functionNum) + ((expressionSyntaxScore +
expressionValueScore) * expressionNum);
+ }
+ */
+
+}
Property changes on:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/StackTraceFeature.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Util.java
===================================================================
---
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Util.java
(rev 0)
+++
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Util.java
2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,9 @@
+package org.monkey.comparator;
+
+public abstract class Util {
+ public static double weightLineNumberDifference(int lineNumberA, int
lineNumberB) {
+ double weight = Math.abs(1 - ((double)(lineNumberA -
lineNumberB)/
+
(double)Constants.LINE_NUMBER_DIFFERENCE_THRESHOLD));
+ return weight;
+ }
+}
Property changes on:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Util.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/bo/Bug.java
===================================================================
---
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/bo/Bug.java
2012-04-03 15:41:27 UTC (rev 20890)
+++
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/bo/Bug.java
2012-04-03 21:18:55 UTC (rev 20891)
@@ -5,7 +5,7 @@
public class Bug {
private String category;
private String fileName;
- private String lineNo;
+ private int lineNo;
private String functionName;
private ArrayList<Epoch> epochList = new ArrayList<Epoch>();
public void setFileName(String fileName) {
@@ -14,10 +14,10 @@
public String getFileName() {
return fileName;
}
- public void setLineNo(String lineNo) {
+ public void setLineNo(int lineNo) {
this.lineNo = lineNo;
}
- public String getLineNo() {
+ public int getLineNo() {
return lineNo;
}
public void setFunctionName(String functionName) {
Modified:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/bo/XMLParser.java
===================================================================
---
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/bo/XMLParser.java
2012-04-03 15:41:27 UTC (rev 20890)
+++
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/bo/XMLParser.java
2012-04-03 21:18:55 UTC (rev 20891)
@@ -64,11 +64,11 @@
bug.setCategory(element.getAttribute("category"));
bug.setFileName(element.getAttribute("file"));
bug.setFunctionName(element.getAttribute("function"));
- bug.setLineNo(element.getAttribute("line"));
+
bug.setLineNo(Integer.parseInt(element.getAttribute("line")));
/* History is consisting of a list of epoch nodes */
epochNodeList = document.getElementsByTagName("epoch");
- printAllNodes(epochNodeList);
+ //printAllNodes(epochNodeList);
for (int i = 0; i < epochNodeList.getLength(); i++) {
epochNode = epochNodeList.item(i);
if (epochNode.getNodeType() ==
Node.ELEMENT_NODE) {
@@ -178,6 +178,7 @@
// This method is used for debugging
+ /*
private static void printAllNodes(NodeList nodeList) {
NodeList childNodes;
for (int i = 0; i < nodeList.getLength(); i++) {
@@ -189,5 +190,5 @@
}
}
}
-
+ */
}
Added:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/ComparatorTest.java
===================================================================
---
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/ComparatorTest.java
(rev 0)
+++
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/ComparatorTest.java
2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,45 @@
+package org.monkey.comparator.testing;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+import org.monkey.comparator.MonkeyComparator;
+import org.monkey.comparator.bo.Bug;
+import org.monkey.comparator.bo.XMLParser;
+
+public class ComparatorTest {
+
+ @Test
+ public void testTotalSimilarity() {
+ Bug bugA =
XMLParser.parse("src/org/monkey/comparator/testing/refs/monkey.xml");
+ Bug bugB =
XMLParser.parse("src/org/monkey/comparator/testing/refs/monkey.xml");
+ assertEquals(100.0, MonkeyComparator.compareBugs(bugA, bugB),
0);
+ }
+
+ @Test
+ public void testSameStackDifferentFunctionNames() {
+ Bug bugA =
XMLParser.parse("src/org/monkey/comparator/testing/refs/monkey.xml");
+ Bug bugB =
XMLParser.parse("src/org/monkey/comparator/testing/refs/monkey_different_fname.xml");
+
+ double similarityPercentage =
MonkeyComparator.compareBugs(bugA, bugB);
+ assertEquals(99.58333333333333, similarityPercentage, 0);
+ }
+
+ @Test
+ public void testCommonAndDifferentExpressions() {
+ Bug bugA =
XMLParser.parse("src/org/monkey/comparator/testing/refs/monkey.xml");
+ Bug bugB =
XMLParser.parse("src/org/monkey/comparator/testing/refs/monkey_common_and_different_exp.xml");
+
+ double similarityPercentage =
MonkeyComparator.compareBugs(bugA, bugB);
+ assertEquals(93.33333333333333, similarityPercentage, 0);
+ }
+
+ @Test
+ public void testSlightlyDifferentStackTraces() {
+ Bug bugA =
XMLParser.parse("src/org/monkey/comparator/testing/refs/monkey.xml");
+ Bug bugB =
XMLParser.parse("src/org/monkey/comparator/testing/refs/monkey_different_trace.xml");
+
+ double similarityPercentage =
MonkeyComparator.compareBugs(bugA, bugB);
+ assertEquals(88.8888888888889, similarityPercentage, 0);
+ }
+}
Property changes on:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/ComparatorTest.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey.xml
===================================================================
---
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey.xml
(rev 0)
+++
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey.xml
2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<crash category="npe" function="crashFunction" line="14"
file="bug_null_pointer_exception.c" >
+<history>
+<epoch step="0" >
+<trace>
+<function name="crashFunction" line="14" file="bug_null_pointer_exception.c"
depth="0" >
+<expressions>
+<expression name="crashStruct" >NULL</expression>
+<expression name="x" >5</expression>
+<expression name="y" >6</expression>
+<expression name="s" >Hello</expression>
+</expressions>
+</function>
+<function name="anotherCrashFunction" line="3"
file="bug_null_pointer_exception.c" depth="1" >
+<expressions>
+<expression name="a" >3</expression>
+<expression name="b" >7</expression>
+<expression name="c" >9</expression>
+<expression name="d" >112</expression>
+</expressions>
+</function>
+</trace>
+</epoch>
+<epoch step="1" >
+<trace>
+<function name="crashFunction" line="14" file="bug_null_pointer_exception.c"
depth="0" >
+<expressions>
+<expression name="crashStruct" >NULL</expression>
+<expression name="x" >5</expression>
+<expression name="y" >6</expression>
+<expression name="s" >Hello</expression>
+</expressions>
+</function>
+<function name="anotherCrashFunction" line="3"
file="bug_null_pointer_exception.c" depth="1" >
+<expressions>
+<expression name="a" >3</expression>
+<expression name="b" >7</expression>
+<expression name="c" >9</expression>
+<expression name="d" >112</expression>
+</expressions>
+</function>
+</trace>
+</epoch>
+</history>
+</crash>
Property changes on:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey.xml
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_common_and_different_exp.xml
===================================================================
---
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_common_and_different_exp.xml
(rev 0)
+++
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_common_and_different_exp.xml
2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<crash category="npe" function="crashFunction" line="14"
file="bug_null_pointer_exception.c" >
+<history>
+<epoch step="0" >
+<trace>
+<function name="crashFunction" line="14" file="bug_null_pointer_exception.c"
depth="0" >
+<expressions>
+<expression name="crashStruct" >NULL</expression>
+<expression name="x" >5</expression>
+<expression name="p" >10</expression>
+<expression name="y" >6</expression>
+<expression name="ssss" >Hello</expression>
+</expressions>
+</function>
+<function name="anotherCrashFunction" line="3"
file="bug_null_pointer_exception.c" depth="1" >
+<expressions>
+<expression name="a" >3</expression>
+<expression name="b" >7</expression>
+<expression name="c" >9</expression>
+<expression name="d" >112</expression>
+</expressions>
+</function>
+</trace>
+</epoch>
+<epoch step="1" >
+<trace>
+<function name="crashFunction" line="14" file="bug_null_pointer_exception.c"
depth="0" >
+<expressions>
+<expression name="crashStruct" >NULL</expression>
+<expression name="x" >5</expression>
+<expression name="p" >10</expression>
+<expression name="y" >6</expression>
+<expression name="ssss" >Hello</expression>
+</expressions>
+</function>
+<function name="anotherCrashFunction" line="3"
file="bug_null_pointer_exception.c" depth="1" >
+<expressions>
+<expression name="a" >3</expression>
+<expression name="b" >7</expression>
+<expression name="c" >9</expression>
+<expression name="d" >112</expression>
+</expressions>
+</function>
+</trace>
+</epoch>
+</history>
+</crash>
Property changes on:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_common_and_different_exp.xml
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_fname.xml
===================================================================
---
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_fname.xml
(rev 0)
+++
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_fname.xml
2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<crash category="npe" function="crashFunction" line="14"
file="bug_null_pointer_exception.c" >
+<history>
+<epoch step="0" >
+<trace>
+<function name="crashFunction" line="14" file="bug_null_pointer_exception.c"
depth="0" >
+<expressions>
+<expression name="crashStruct" >NULL</expression>
+<expression name="x" >5</expression>
+<expression name="y" >6</expression>
+<expression name="s" >Hello</expression>
+</expressions>
+</function>
+<function name="theOtherCrashFunction" line="3"
file="bug_null_pointer_exception.c" depth="1" >
+<expressions>
+<expression name="a" >3</expression>
+<expression name="b" >7</expression>
+<expression name="c" >9</expression>
+<expression name="d" >112</expression>
+</expressions>
+</function>
+</trace>
+</epoch>
+<epoch step="1" >
+<trace>
+<function name="crashFunction" line="14" file="bug_null_pointer_exception.c"
depth="0" >
+<expressions>
+<expression name="crashStruct" >NULL</expression>
+<expression name="x" >5</expression>
+<expression name="y" >6</expression>
+<expression name="s" >Hello</expression>
+</expressions>
+</function>
+<function name="theOtherCrashFunction" line="3"
file="bug_null_pointer_exception.c" depth="1" >
+<expressions>
+<expression name="a" >3</expression>
+<expression name="b" >7</expression>
+<expression name="c" >9</expression>
+<expression name="d" >112</expression>
+</expressions>
+</function>
+</trace>
+</epoch>
+</history>
+</crash>
Property changes on:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_fname.xml
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_trace.xml
===================================================================
---
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_trace.xml
(rev 0)
+++
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_trace.xml
2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<crash category="npe" function="crashFunction" line="14"
file="bug_null_pointer_exception.c" >
+<history>
+<epoch step="0" >
+<trace>
+<function name="crashFunction" line="14" file="bug_null_pointer_exception.c"
depth="0" >
+<expressions>
+<expression name="crashStruct" >NULL</expression>
+<expression name="x" >5</expression>
+<expression name="y" >6</expression>
+<expression name="s" >Hello</expression>
+</expressions>
+</function>
+<function name="intermediateFunction" line="20"
file="bug_null_pointer_exception.c" depth="0" >
+<expressions>
+<expression name="alpha" >1</expression>
+<expression name="beta" >2</expression>
+<expression name="gamma" >7</expression>
+<expression name="delta" >hurray</expression>
+</expressions>
+</function>
+<function name="anotherCrashFunction" line="3"
file="bug_null_pointer_exception.c" depth="1" >
+<expressions>
+<expression name="a" >3</expression>
+<expression name="b" >7</expression>
+<expression name="c" >9</expression>
+<expression name="d" >112</expression>
+</expressions>
+</function>
+</trace>
+</epoch>
+<epoch step="1" >
+<trace>
+<function name="crashFunction" line="14" file="bug_null_pointer_exception.c"
depth="0" >
+<expressions>
+<expression name="crashStruct" >NULL</expression>
+<expression name="x" >5</expression>
+<expression name="y" >6</expression>
+<expression name="s" >Hello</expression>
+</expressions>
+</function>
+<function name="intermediateFunction" line="20"
file="bug_null_pointer_exception.c" depth="0" >
+<expressions>
+<expression name="alpha" >1</expression>
+<expression name="beta" >2</expression>
+<expression name="gamma" >7</expression>
+<expression name="delta" >hurray</expression>
+</expressions>
+</function>
+<function name="anotherCrashFunction" line="3"
file="bug_null_pointer_exception.c" depth="1" >
+<expressions>
+<expression name="a" >3</expression>
+<expression name="b" >7</expression>
+<expression name="c" >9</expression>
+<expression name="d" >112</expression>
+</expressions>
+</function>
+</trace>
+</epoch>
+</history>
+</crash>
Property changes on:
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_trace.xml
___________________________________________________________________
Added: svn:mime-type
+ text/plain
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r20891 - in monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator: . src/org/monkey/comparator src/org/monkey/comparator/bo src/org/monkey/comparator/testing src/org/monkey/comparator/testing/refs,
gnunet <=