diff --git a/src/main/java/fr/inria/diversify/DiversifyMain.java b/src/main/java/fr/inria/diversify/DiversifyMain.java index f3bf1140..5fab3307 100644 --- a/src/main/java/fr/inria/diversify/DiversifyMain.java +++ b/src/main/java/fr/inria/diversify/DiversifyMain.java @@ -120,8 +120,13 @@ protected void initAndRunBuilder(Builder builder) throws Exception { //TODO refactor if (DiversifyProperties.getProperty("nbRun").equals("all")) { - if(DiversifyProperties.getProperty("transformation.directory") != null) - builder.run(1000); + if(DiversifyProperties.getProperty("transformation.directory") != null) { + TransformationParser tf = new TransformationParser(codeFragments); + List transformations = tf.parseDir(DiversifyProperties.getProperty("transformation.directory")); + Set set = new HashSet(transformations); + Log.debug("apply {} transformation", set.size()); + builder.run(set); + } Util util = new Util(codeFragments); if (DiversifyProperties.getProperty("transformation.type").equals("replace")) builder.run(util.getAllReplace()); @@ -132,7 +137,16 @@ protected void initAndRunBuilder(Builder builder) throws Exception { } else if (DiversifyProperties.getProperty("transformation.type").equals("stupid")) { int n = Integer.parseInt(DiversifyProperties.getProperty("nbRun")); Util util = new Util(codeFragments); - builder.run(util.getStupidTransformation(n, (ASTTransformationQuery)query)); + int count = 0; + for(int i = 0; i < 100; i++) { + builder.run(util.getStupidTransformation(n, (ASTTransformationQuery)query)); + int size = builder.getTransformations().size(); + builder.getTransformations().clear(); + count = size+ count; + Log.debug("{}*7 = {}",n,size); + } + Log.debug("mean: {}*7 = {}",n,((double)count/100.0)); +// builder.run(util.getStupidTransformation(n, (ASTTransformationQuery)query)); } else { diff --git a/src/main/java/fr/inria/diversify/codeFragment/InputContext.java b/src/main/java/fr/inria/diversify/codeFragment/InputContext.java index 74ea081e..7008b6d3 100644 --- a/src/main/java/fr/inria/diversify/codeFragment/InputContext.java +++ b/src/main/java/fr/inria/diversify/codeFragment/InputContext.java @@ -28,7 +28,6 @@ public boolean equals(Object obj) { protected Set inputContextToString() { //todo set ou list ????? - //axis 2012 icse 2013 gorla Set set = new HashSet(); for (CtVariableReference var : localVariableReferences) set.add(var.getType().toString()); diff --git a/src/main/java/fr/inria/diversify/codeFragment/VariableVisitor.java b/src/main/java/fr/inria/diversify/codeFragment/VariableVisitor.java index c4ad4682..c2a526ec 100644 --- a/src/main/java/fr/inria/diversify/codeFragment/VariableVisitor.java +++ b/src/main/java/fr/inria/diversify/codeFragment/VariableVisitor.java @@ -5,6 +5,7 @@ import spoon.reflect.code.CtLocalVariable; import spoon.reflect.code.CtVariableAccess; import spoon.reflect.declaration.ModifierKind; +import spoon.reflect.reference.CtFieldReference; import spoon.reflect.reference.CtLocalVariableReference; import spoon.reflect.reference.CtTypeReference; import spoon.reflect.reference.CtVariableReference; @@ -45,12 +46,19 @@ public void visitCtLocalVariableReference( super.visitCtLocalVariableReference(reference); } - public void visitCtFieldAccess(CtFieldAccess fieldAccess) { - if(!(fieldAccess.getVariable().getSimpleName() == "super")) - if(!(fieldAccess.getVariable().isStatic() && fieldAccess.getVariable().getModifiers().contains(ModifierKind.PUBLIC))) - fieldReferences.add(fieldAccess); - super.visitCtVariableAccess(fieldAccess); - } +// public void visitCtFieldAccess(CtFieldAccess fieldAccess) { +// if(!(fieldAccess.getVariable().getSimpleName() == "super")) +// if(!(fieldAccess.getVariable().isStatic() && fieldAccess.getVariable().getModifiers().contains(ModifierKind.PUBLIC))) +// fieldReferences.add(fieldAccess); +// super.visitCtVariableAccess(fieldAccess); +// } + + public void visitCtFieldReference(CtFieldReference reference) { + if(!(reference.getSimpleName() == "super")) + if(!(reference.isStatic() && reference.getModifiers().contains(ModifierKind.PUBLIC))) + localVariableReferences.add(reference); + super.visitCtFieldReference(reference); + } public void visitCtInvocation(CtInvocation invocation) { if(invocation.getTarget() == null){ diff --git a/src/main/java/fr/inria/diversify/diversification/Builder.java b/src/main/java/fr/inria/diversify/diversification/Builder.java index 8e406d3d..208c2c68 100644 --- a/src/main/java/fr/inria/diversify/diversification/Builder.java +++ b/src/main/java/fr/inria/diversify/diversification/Builder.java @@ -88,7 +88,7 @@ protected String prepare(String dirSource, String dirTarget, String newPomFile) } protected Integer runTest(String directory) throws InterruptedException, CompileException { - RunMaven rt = new RunMaven(directory, new String[]{"test"}, timeOut,clojureTest); + RunMaven rt = new RunMaven(directory, new String[]{"compile"}, timeOut,clojureTest); rt.start(); rt.join(1000*timeOut); @@ -192,4 +192,6 @@ public void setNewPomFile(String pom) { public void setTransformationQuery(ITransformationQuery transQuery) { this.transQuery = transQuery; } + + public List getTransformations() {return transformations;} } diff --git a/src/main/java/fr/inria/diversify/sosie/Logger/LogWriter.java b/src/main/java/fr/inria/diversify/sosie/Logger/LogWriter.java index cfcd58a7..b30fd6a6 100644 --- a/src/main/java/fr/inria/diversify/sosie/Logger/LogWriter.java +++ b/src/main/java/fr/inria/diversify/sosie/Logger/LogWriter.java @@ -15,12 +15,19 @@ public class LogWriter { static private Map fileWriters; static private String separator = ":;:"; private static String currentTestSignature; + private static Map idMap; protected synchronized static FileWriter init(Thread thread) throws IOException { if(fileWriters == null) { if(dir == null) initDir(); + try { + idMap = loadIdMap(dir+"/id"); + } catch (Exception e) { + idMap = new HashMap(); + } + fileWriters = new HashMap(); ShutdownHookLog shutdownHook = new ShutdownHookLog(); Runtime.getRuntime().addShutdownHook(shutdownHook); @@ -63,17 +70,17 @@ public static void writeLog(int id,Thread thread, String className, String metho } try { fileWriter.append("$$$\n"); - fileWriter.append(id+""); - fileWriter.append(separator); - fileWriter.append(className); +// fileWriter.append(id+""); +// fileWriter.append(separator); + fileWriter.append(idFor(className)); fileWriter.append(separator); - fileWriter.append(methodSignature); + fileWriter.append(idFor(methodSignature)); for (int i = 0; i < var.length/2; i = i + 2) { fileWriter.append(separator); - fileWriter.append(var[i].toString()); + fileWriter.append(idFor(var[i].toString())); fileWriter.append(separator); - fileWriter.append(var[i+1]+""); + fileWriter.append(var[i+1].toString()); } } catch (IOException e) { e.printStackTrace(); @@ -157,5 +164,41 @@ public static void close() { } catch (IOException e) { e.printStackTrace(); } + try { + writeIdFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + protected static String idFor(String string) { + if(!idMap.containsKey(string)) + idMap.put(string,idMap.size()+""); + + return idMap.get(string); + } + + protected static void writeIdFile() throws IOException { + FileWriter fw = new FileWriter(dir.getAbsolutePath()+"/id"); + + for(String s : idMap.keySet()) + fw.write(idMap.get(s)+ " " +s+"\n"); + + fw.close(); + } + + protected static Map loadIdMap(String file) throws IOException { + Map map = new HashMap(); + BufferedReader reader = new BufferedReader(new FileReader(file)); + reader.readLine(); + String line = reader.readLine(); + + while (line != null) { + + String[] tmp = line.split(" "); + map.put(tmp[1],tmp[0]); + line = reader.readLine(); + } + return map; } } diff --git a/src/main/java/fr/inria/diversify/sosie/Logger/processor/ConditionalLoggingInstrumenter.java b/src/main/java/fr/inria/diversify/sosie/Logger/processor/ConditionalLoggingInstrumenter.java index 4a05f6df..342ebca3 100644 --- a/src/main/java/fr/inria/diversify/sosie/Logger/processor/ConditionalLoggingInstrumenter.java +++ b/src/main/java/fr/inria/diversify/sosie/Logger/processor/ConditionalLoggingInstrumenter.java @@ -31,6 +31,7 @@ public boolean isToBeProcessed(CtStatement candidate) { || CtLoop.class.isAssignableFrom(candidate.getClass()) || CtThrow.class.isAssignableFrom(candidate.getClass()) ; + } public boolean hasStaticParent(CtElement el) { diff --git a/src/main/java/fr/inria/diversify/sosie/compare/CompareLogMain.java b/src/main/java/fr/inria/diversify/sosie/compare/CompareLogMain.java index 6440503a..e375d337 100644 --- a/src/main/java/fr/inria/diversify/sosie/compare/CompareLogMain.java +++ b/src/main/java/fr/inria/diversify/sosie/compare/CompareLogMain.java @@ -20,7 +20,9 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * User: Simon @@ -66,6 +68,12 @@ protected void same() throws IOException { protected void diff() throws Exception { List trans = new ArrayList(); String startPointString = DiversifyProperties.getProperty("startPoint"); + int testMax = 0; + int testMin = 100; + int test = 0; + int varMax = 0; + int varMin = 100; + int var = 0; int count = 0; int i =0; for(File f : (new File(dirSosie).listFiles())) { @@ -88,9 +96,22 @@ protected void diff() throws Exception { Log.info(diff.report()); if(!diff.sameVar()) { + trans.add(parser.parseUniqueTransformation(startPoint)); diff.toDot(DiversifyProperties.getProperty("result")+"cp_"+f.getName()+".dot"); count++; + + Set set = new HashSet(); + for(VariableDiff d : diff.getAllVariableDiff()) { + set.add(d.getVarName()); + } + var = var + set.size(); + varMax = Math.max(varMax,set.size()); + varMin = Math.min(varMin,set.size()); + Log.info("nb diff:{}",set.size()); + test = test +diff.getCount(); + testMax = Math.max(testMax,diff.getCount()); + testMin = Math.min(testMin,diff.getCount()); Log.info("i: "+count); } } @@ -100,7 +121,8 @@ protected void diff() throws Exception { Log.error("error",e); e.printStackTrace(); } - + Log.info("nb diff:{}, min: {}, max: {}, {} ",count, testMin,testMax, (double)test/(double)count); + Log.info("var min: {}, var max: {}, {} ", varMin,varMax, (double)var/(double)count); TransformationsWriter write = new TransformationsWriter(trans,DiversifyProperties.getProperty("result") + "/sosie/sosie"); write.writeAllTransformation(null); } @@ -109,6 +131,9 @@ protected void diff() throws Exception { protected void diffException() throws Exception { List trans = new ArrayList(); String startPointString = DiversifyProperties.getProperty("startPoint"); + int testMax = 0; + int testMin = 100; + int test = 0; int count = 0; int i =0; for(File f : (new File(dirSosie).listFiles())) { @@ -133,6 +158,9 @@ protected void diffException() throws Exception { trans.add(parser.parseUniqueTransformation(startPoint)); diff.toDotCatch(DiversifyProperties.getProperty("result")+"exception_"+f.getName() + ".dot"); count++; + test = test +diff.getCount(); + testMax = Math.max(testMax,diff.getCount()); + testMin = Math.min(testMin,diff.getCount()); Log.info("i: "+count); } } @@ -143,7 +171,7 @@ protected void diffException() throws Exception { e.printStackTrace(); } } - + Log.info("nb diff:{}, min: {}, max: {}, {} ",count, testMin,testMax, (double)test/(double)count); Log.info("max exception: "+ PointSequence.getMaxSizeException()); TransformationsWriter write = new TransformationsWriter(trans,DiversifyProperties.getProperty("result") + "/sosie/sosieE"); diff --git a/src/main/java/fr/inria/diversify/sosie/compare/CompareMultiExceptionSequence.java b/src/main/java/fr/inria/diversify/sosie/compare/CompareMultiExceptionSequence.java index 5c69abe3..aa71deb7 100644 --- a/src/main/java/fr/inria/diversify/sosie/compare/CompareMultiExceptionSequence.java +++ b/src/main/java/fr/inria/diversify/sosie/compare/CompareMultiExceptionSequence.java @@ -8,7 +8,9 @@ import java.io.*; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * User: Simon @@ -81,6 +83,7 @@ public Diff findDiffException() throws IOException { protected List loadPointSequence(String dir, boolean recursive) { List list = new ArrayList(); File file = new File(dir); + Log.debug("load trace in directory: {}",dir); for (File f : file.listFiles()) { if(recursive && f.isDirectory()) @@ -88,7 +91,7 @@ protected List loadPointSequence(String dir, boolean recursive) { else { try { PointSequence ps = new PointSequence(); - ps.parseFile(f); + ps.parseFile(f,null); list.add(ps); } catch (Exception e) { // Log.warn("error during parse file {}",e,f); diff --git a/src/main/java/fr/inria/diversify/sosie/compare/CompareMultiLogSequence.java b/src/main/java/fr/inria/diversify/sosie/compare/CompareMultiLogSequence.java index 51071255..f2c8cb4b 100644 --- a/src/main/java/fr/inria/diversify/sosie/compare/CompareMultiLogSequence.java +++ b/src/main/java/fr/inria/diversify/sosie/compare/CompareMultiLogSequence.java @@ -7,10 +7,7 @@ import org.json.JSONException; import java.io.*; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; /** * User: Simon @@ -142,9 +139,15 @@ protected Set loadVarToExclude(String fileExcludeVar) throws IOExc return varToExclude; } - protected List loadPointSequence(String dir, boolean recursive) { + protected List loadPointSequence(String dir, boolean recursive){ List list = new ArrayList(); File file = new File(dir); + Map idMap = null; + try { + idMap = loadIdMap(dir + "/id"); + } catch (IOException e) { + e.printStackTrace(); + } Log.debug("load trace in directory: {}",dir); for (File f : file.listFiles()) { if(recursive && f.isDirectory()) @@ -152,16 +155,29 @@ protected List loadPointSequence(String dir, boolean recursive) { else { try { PointSequence ps = new PointSequence(); - ps.parseFile(f); + ps.parseFile(f,idMap); list.add(ps); } catch (Exception e) { -// Log.warn("error during parse file {}",e,f); } } } return list; } + protected Map loadIdMap(String file) throws IOException { + Map map = new HashMap(); + BufferedReader reader = new BufferedReader(new FileReader(file)); + reader.readLine(); + String line = reader.readLine(); + + while (line != null) { + line = reader.readLine(); + String[] tmp = line.split(" "); + map.put(tmp[0],tmp[1]); + } + return map; + } + public void setSyncroRange(int syncroRange) { this.syncroRange = syncroRange; } diff --git a/src/main/java/fr/inria/diversify/sosie/compare/Diff.java b/src/main/java/fr/inria/diversify/sosie/compare/Diff.java index 40575dd0..b2138a40 100644 --- a/src/main/java/fr/inria/diversify/sosie/compare/Diff.java +++ b/src/main/java/fr/inria/diversify/sosie/compare/Diff.java @@ -22,13 +22,13 @@ public class Diff { protected Map match; protected Map conditionalDivergence; protected Map catchDivergence; - protected Map> diffCatch; + protected Map> diffException; protected CodeFragment startPoint; public Diff(CodeFragment startPoint) { this.diffVar = new HashMap>(); - this.diffCatch = new HashMap>(); + this.diffException = new HashMap>(); conditionalDivergence = new HashMap(); catchDivergence = new HashMap(); match = new HashMap(); @@ -43,10 +43,10 @@ public void addVarFor(PointSequence original, Set var) { } public void addCatchFor(PointSequence original, Set divergenceCatch) { - if(!diffCatch.containsKey(original)) - diffCatch.put(original,new HashSet()); + if(!diffException.containsKey(original)) + diffException.put(original,new HashSet()); - diffCatch.get(original).addAll(divergenceCatch); + diffException.get(original).addAll(divergenceCatch); } public void addMatch(PointSequence original, PointSequence sosie) { @@ -96,7 +96,7 @@ public boolean sameVar() { } public boolean sameCatch() { - for (Set vars : diffCatch.values()) + for (Set vars : diffException.values()) if (!vars.isEmpty()) return false; @@ -135,12 +135,12 @@ public void toDot(String fileName) throws IOException { FileWriter fw = new FileWriter(fileName); BufferedWriter bw = new BufferedWriter(fw); - + count = 0; bw.write("digraph G {\n"); for (PointSequence ps : match.keySet()) if (!diffVar.get(ps).isEmpty() ) { try { - bw.write(toDot(ps)); + bw.write(toDot(ps)); }catch (Exception e) {} } @@ -148,11 +148,13 @@ public void toDot(String fileName) throws IOException { bw.close(); } + public int getCount() {return count;} + int count; protected String toDot(PointSequence original) throws IOException { if(match.get(original) == null) return ""; - + count++; StringBuilder builder = new StringBuilder(); PointSequence sosie = match.get(original); @@ -212,10 +214,10 @@ public void toDotCatch(String fileName) throws IOException { FileWriter fw = new FileWriter(fileName); BufferedWriter bw = new BufferedWriter(fw); - + count = 0; bw.write("digraph G {\n"); for (PointSequence ps : match.keySet()) - if (!diffCatch.get(ps).isEmpty() ) { + if (!diffException.get(ps).isEmpty() ) { try { bw.write(toDotCatch(ps)); }catch (Exception e) {} @@ -228,7 +230,7 @@ public void toDotCatch(String fileName) throws IOException { protected String toDotCatch(PointSequence original) throws IOException { if(match.get(original) == null) return ""; - + count++; StringBuilder builder = new StringBuilder(); PointSequence sosie = match.get(original); @@ -285,7 +287,7 @@ protected void writeDotBranchCatch(StringBuilder builder, Point branchNext, Poin protected Set getCatchDiffFor(PointSequence ps, int index) { Set set = new HashSet(); - for (ExceptionDiff varD : diffCatch.get(ps)) { + for (ExceptionDiff varD : diffException.get(ps)) { if(varD.positionInOriginal == index) set.add(varD); } @@ -301,4 +303,17 @@ protected Set getVariableDiffFor(PointSequence ps, int index) { return set; } + public Set getAllVariableDiff() { + Set diffs = new HashSet(); + for(Set set : diffVar.values()) + diffs.addAll(set); + return diffs; + } + + public Set getAllExceptionDiff() { + Set diffs = new HashSet(); + for(Set set : diffException.values()) + diffs.addAll(set); + return diffs; + } } \ No newline at end of file diff --git a/src/main/java/fr/inria/diversify/sosie/compare/VariableDiff.java b/src/main/java/fr/inria/diversify/sosie/compare/VariableDiff.java index db6616b4..fb4f0a75 100644 --- a/src/main/java/fr/inria/diversify/sosie/compare/VariableDiff.java +++ b/src/main/java/fr/inria/diversify/sosie/compare/VariableDiff.java @@ -32,6 +32,9 @@ public VariableDiff(String var) { this.name = tmp[2]; } + public String getVarName() { + return name; + } public String toString() { return className+":"+methodSignature+":"+name+":("+originalValue+" / "+sosieValue+") index:"+positionInOriginal+"/"+positionInSosie; } diff --git a/src/main/java/fr/inria/diversify/sosie/pointSequence/ConditionalPoint.java b/src/main/java/fr/inria/diversify/sosie/pointSequence/ConditionalPoint.java index 584bd6cf..84f236c6 100644 --- a/src/main/java/fr/inria/diversify/sosie/pointSequence/ConditionalPoint.java +++ b/src/main/java/fr/inria/diversify/sosie/pointSequence/ConditionalPoint.java @@ -15,8 +15,8 @@ public class ConditionalPoint extends Point { Map vars; - public ConditionalPoint(String string) { - super(string); + public ConditionalPoint(String string, Map idMap) { + super(string, idMap); } public boolean sameValue(Point point) { if(!(point instanceof ConditionalPoint)) @@ -38,14 +38,37 @@ public boolean sameLogPoint(Point point) { return super.sameLogPoint(point) && vars.keySet().equals(((ConditionalPoint)point).vars.keySet()); } + protected void buildFrom(String string, Map idMap) { + if(idMap == null) + buildFrom(string); + else + buildFromId(string,idMap); + } + + protected void buildFromId(String string, Map idMap) { + vars = new HashMap(); + String[] array = string.split(":;:"); + try { +// id = Integer.parseInt(array[0]); + className = idMap.get(array[0]); + methodSignature = idMap.get(array[1]); + for (int i = 2; i< array.length; i = i+2) { + vars.put(idMap.get(array[i]), array[i+1]); + } + } catch (Exception e) { + bugPoint = true; + } + } + + //ancienne version des logs protected void buildFrom(String string) { vars = new HashMap(); String[] array = string.split(":;:"); try { id = Integer.parseInt(array[0]); - className = array[1]; - methodSignature = array[2]; - for (int i = 3; i< array.length; i = i+2) { + className = array[0]; + methodSignature = array[1]; + for (int i = 2; i< array.length; i = i+2) { vars.put(array[i], array[i+1]); } } catch (Exception e) { diff --git a/src/main/java/fr/inria/diversify/sosie/pointSequence/ExceptionPoint.java b/src/main/java/fr/inria/diversify/sosie/pointSequence/ExceptionPoint.java index c4f1c9f2..d875ee70 100644 --- a/src/main/java/fr/inria/diversify/sosie/pointSequence/ExceptionPoint.java +++ b/src/main/java/fr/inria/diversify/sosie/pointSequence/ExceptionPoint.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Set; /** @@ -15,12 +16,12 @@ public class ExceptionPoint extends Point { private List stackTrace; - public ExceptionPoint(String string) { - super(string); + public ExceptionPoint(String string, Map idMap) { + super(string, idMap); } @Override - protected void buildFrom(String string) { + protected void buildFrom(String string, Map idMap) { stackTrace = new ArrayList(); String[] array = string.split(":;:"); try { diff --git a/src/main/java/fr/inria/diversify/sosie/pointSequence/Point.java b/src/main/java/fr/inria/diversify/sosie/pointSequence/Point.java index 1b3586c5..e494e658 100644 --- a/src/main/java/fr/inria/diversify/sosie/pointSequence/Point.java +++ b/src/main/java/fr/inria/diversify/sosie/pointSequence/Point.java @@ -3,6 +3,7 @@ import fr.inria.diversify.codeFragment.CodeFragment; import fr.inria.diversify.sosie.compare.VariableDiff; +import java.util.Map; import java.util.Set; /** @@ -16,8 +17,8 @@ public abstract class Point { int id; boolean bugPoint = false; - public Point(String string) { - buildFrom(string); + public Point(String string, Map idMap) { + buildFrom(string, idMap); } public boolean sameLogPoint(Point point) { @@ -41,7 +42,7 @@ public boolean containsInto(CodeFragment cf) { return false; } - protected abstract void buildFrom(String string); + protected abstract void buildFrom(String string, Map idMap); public String getClassName() { return className; diff --git a/src/main/java/fr/inria/diversify/sosie/pointSequence/PointSequence.java b/src/main/java/fr/inria/diversify/sosie/pointSequence/PointSequence.java index 6b0c8b5d..2f8c62a1 100644 --- a/src/main/java/fr/inria/diversify/sosie/pointSequence/PointSequence.java +++ b/src/main/java/fr/inria/diversify/sosie/pointSequence/PointSequence.java @@ -6,6 +6,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * User: Simon @@ -25,7 +26,7 @@ public PointSequence() { exceptionPoints = new ArrayList(); } - public void parseFile(File file) throws IOException { + public void parseFile(File file,Map idMap) throws IOException { parseFileName(file.getName()); BufferedReader reader = new BufferedReader(new FileReader(file)); @@ -35,7 +36,7 @@ public void parseFile(File file) throws IOException { while (line != null) { if(!line.isEmpty()) { if(line.endsWith("$$$")) { - addPoint(tmp + line.substring(0,line.length()-3)); + addPoint(tmp + line.substring(0,line.length()-3), idMap); tmp = ""; } @@ -45,15 +46,15 @@ public void parseFile(File file) throws IOException { } line = reader.readLine(); } - addPoint(tmp); + addPoint(tmp, idMap); maxSizeException = Math.max(maxSizeException,exceptionPoints.size()); } - protected void addPoint(String stringPoint) { + protected void addPoint(String stringPoint, Map idMap) { if(stringPoint.startsWith("ST")) - exceptionPoints.add(new ExceptionPoint(stringPoint)); + exceptionPoints.add(new ExceptionPoint(stringPoint, idMap)); else - conditionalPoints.add(new ConditionalPoint(stringPoint)); + conditionalPoints.add(new ConditionalPoint(stringPoint, idMap)); } public int findPoint(int id, String className, String methodSignature) { diff --git a/src/main/java/fr/inria/diversify/statistic/Util.java b/src/main/java/fr/inria/diversify/statistic/Util.java index 9602a156..b2a0d0ff 100644 --- a/src/main/java/fr/inria/diversify/statistic/Util.java +++ b/src/main/java/fr/inria/diversify/statistic/Util.java @@ -109,18 +109,18 @@ public Set getStupidTransformation(int nb, ASTTransformationQue CodeFragment position = replace.getPosition(); transformations.add(replace); - ASTReplace stupidReplace = query.replace(position); - stupidReplace.setType("stupidReplace"); - transformations.add(stupidReplace); - transformations.add(query.veryStupidReplace(position)); - - transformations.add(query.add(position)); - ASTAdd stupidASTAdd = query.add(position); - stupidASTAdd.setType("stupidAdd"); - transformations.add(stupidASTAdd); - transformations.add(query.veryStupidAdd(position)); - - transformations.add(query.delete(position)); +// ASTReplace stupidReplace = query.replace(position); +// stupidReplace.setType("stupidReplace"); +// transformations.add(stupidReplace); +// transformations.add(query.veryStupidReplace(position)); +// +// transformations.add(query.add(position)); +// ASTAdd stupidASTAdd = query.add(position); +// stupidASTAdd.setType("stupidAdd"); +// transformations.add(stupidASTAdd); +// transformations.add(query.veryStupidAdd(position)); +// +// transformations.add(query.delete(position)); } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/fr/inria/diversify/transformation/ast/ASTReplace.java b/src/main/java/fr/inria/diversify/transformation/ast/ASTReplace.java index 0eaeb435..f53f0c06 100644 --- a/src/main/java/fr/inria/diversify/transformation/ast/ASTReplace.java +++ b/src/main/java/fr/inria/diversify/transformation/ast/ASTReplace.java @@ -63,7 +63,7 @@ protected void addSourceCode() throws Exception { Log.debug("position:\n{}",position); Log.debug("{}",position.getCtCodeFragment().getPosition()); Log.debug("{}",position.getCodeFragmentType()); - Log.debug("replace by:\n{}", replace); + Log.debug("replace by: ({})\n{}",replace.getCodeFragmentType(), replace); if(withVarMapping()) { if(variableMapping == null) {