package org.ntlab.deltaViewer; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import org.ntlab.deltaExtractor.Alias; import org.ntlab.deltaExtractor.DeltaExtractorJSON; import org.ntlab.deltaExtractor.ExtractedStructure; import org.ntlab.trace.FieldAccess; import org.ntlab.trace.FieldUpdate; import org.ntlab.trace.IStatementVisitor; import org.ntlab.trace.MethodExecution; import org.ntlab.trace.MethodInvocation; import org.ntlab.trace.Reference; import org.ntlab.trace.Statement; import org.ntlab.trace.ThreadInstance; import org.ntlab.trace.Trace; import org.ntlab.trace.TraceJSON; import org.ntlab.trace.TracePoint; /** * Delta viewer sample for MagnetRON. * * @author Nitta Lab. */ public class DeltaViewerSample { /** * @param args */ public static void main(String[] args) { // TraceJSON trace = new TraceJSON("traces/jEditBenchmark.trace"); // TraceJSON trace = new TraceJSON("traces/jHotDrawBenchmark.trace"); // TraceJSON trace = new TraceJSON("traces/ArgoUMLBenchmark.trace"); // TraceJSON trace = new TraceJSON("traces/testTrace2.txt"); // one delta extract // TraceJSON trace = new TraceJSON("traces/traceSample1.txt"); // TraceJSON trace = new TraceJSON("traces/traceSample2.txt"); // TraceJSON trace = new TraceJSON("traces/presenSample.txt"); // TraceJSON trace = new TraceJSON("traces/_worstCase.txt"); // TraceJSON trace = new TraceJSON("traces/sample1.trace"); // TraceJSON trace = new TraceJSON("traces/sampleArray.trace"); // TraceJSON trace = new TraceJSON("traces/sampleCollection.trace"); // TraceJSON trace = new TraceJSON("traces/sampleCreate.trace"); // TraceJSON trace = new TraceJSON("traces/sampleStatic.trace"); // TraceJSON trace = new TraceJSON("traces/jHotDrawBenchmarkWithMoreStandardClasses.trace"); // TraceJSON trace = new TraceJSON("traces/ArgoUMLBenchmarkWithMoreStandardClasses.trace"); // TraceJSON trace = new TraceJSON("traces/testTrace3.txt"); // TraceJSON trace = new TraceJSON("traces/testTrace5.txt"); // DeltaExtractorJSON dex = new DeltaExtractorJSON(trace); // HashMap<String, ThreadInstance> threads = trace.getAllThreads(); // ThreadInstance thread = threads.values().iterator().next(); // 最後のスレッドを見ているだけ… // TracePoint tp = thread.getRoot().get(thread.getRoot().size() - 1).getExitPoint(); // // System.out.println("===== All Statements Backward ====="); // TracePoint tp = null; // ExtractedStructure e = null; // DeltaAliasCollector dac = new DeltaAliasCollector(); // long restart = 0L; // for(;;) { // tp = trace.traverseStatementsInTraceBackward(new IStatementVisitor() { // @Override // public boolean preVisitStatement(Statement statement) { // System.out.println("pre:" + statement.getThreadNo() + ":" + statement.getTimeStamp()); // if(statement instanceof FieldUpdate) { // FieldUpdate fu = (FieldUpdate) statement; // if(!Trace.isNull(fu.getValueObjId()) && !Trace.isPrimitive(fu.getValueClassName())) { // return true; // } // } // return false; // } // // @Override // public boolean postVisitStatement(Statement statement) { // System.out.println("post:" + statement.getThreadNo() + ":" + statement.getTimeStamp()); // return false; // } // }, restart); // if(tp == null || !tp.isValid()) break; // e = dex.extract(new Reference(jHotDrawSelect3_1[0], jHotDrawSelect3_1[1], jHotDrawSelect3_1[2], jHotDrawSelect3_1[3]), tp, dac); // dex.extract(tp); // Statement statement = tp.getStatement(); // if(statement instanceof MethodInvocation) { // restart = ((MethodInvocation)tp.getStatement()).getCalledMethodExecution().getExitTime(); // } else { // restart = tp.getStatement().getTimeStamp(); // } // } // trace.traverseStatementsInTraceBackward(new IStatementVisitor() { // @Override // public boolean preVisitStatement(Statement statement) { // System.out.println("post:" + statement.getClass().getName() + ":" + statement.getTimeStamp()); // return false; // } // @Override // public boolean postVisitStatement(Statement statement) { // System.out.println("pre:" + statement.getClass().getName() + ":" + statement.getTimeStamp()); // return false; // } // }); // } // 参照元のオブジェクトId // ExtractedStructure e = dex.extract(new Reference(null, null, "E", "C"), tp, dac); // ExtractedStructure e = dex.extract(new Reference(null, null, "D", "C"), tp, dac); // ExtractedStructure e = dex.extract(new Reference(null, null, "worstCase.P", "worstCase.M"), tp, dac); // ExtractedStructure e = dex.extract(new Reference(null, null, "sample1.D", "sample1.C"), tp, dac); // ExtractedStructure e = dex.extract(new Reference(null, null, "sampleArray.D", "sampleArray.C"), tp, dac); // ExtractedStructure e = dex.extract(new Reference(null, null, "sampleCollection.D", "sampleCollection.C"), tp, dac); // ExtractedStructure e = dex.extract(new Reference(null, null, "sampleCreate.D", "sampleCreate.C"), tp, dac); // ExtractedStructure e = dex.extract(new Reference(null, null, "sampleStatic.D", "sampleStatic.C"), tp, dac); // HashSet<String> marked = trace.getMarkedMethodSignatures(1255991806833871L, 1255991808597322L); // HashSet<String> marked = trace.getMarkedMethodSignatures(1699553004208835L, 1699553004739523L); // System.out.println("===== Marked Methods ====="); // for (String method: marked) { // System.out.println(method); // } // HashSet<String> unmarked = trace.getUnmarkedMethodSignatures(1255991806833871L, 1255991808597322L); // HashSet<String> unmarked = trace.getUnmarkedMethodSignatures(1699553004208835L, 1699553004739523L); // System.out.println("===== Unmarked Methods ====="); // for (String method: unmarked) { // System.out.println(method); // } // Change! // setArray, setCollection(2回目以降は必要なし) , foreach(thread) // ArrayListにaddされてない // フィールドに代入されていない // HashMap<String, ThreadInstance> threads = trace.getAllThreads(); // for(ThreadInstance ti: threads.values()) { // ArrayList<MethodExecution> roots = ti.getRoot(); // for(MethodExecution root: roots) { // traverseMethodExecution(root); // } // } Map<String, String[]> argsMap = new HashMap<>(); setArgmentsForDeltaExtract(argsMap); // String argsKey = "ArgoUMLPlace1_1"; //抽出したいデルタの引数を格納したMapのkey String argsKey = "ArgoUMLSelect0_1"; //抽出したいデルタの引数を格納したMapのkey // String argsKey = "ArgoUMLSelect1_2"; //抽出したいデルタの引数を格納したMapのkey // String argsKey = "sampleStatic"; //抽出したいデルタの引数を格納したMapのkey // String argsKey = "worstCase"; //抽出したいデルタの引数を格納したMapのkey // String argsKey = "sample1"; //抽出したいデルタの引数を格納したMapのkey long time = System.nanoTime(); TraceJSON trace = new TraceJSON(argsMap.get(argsKey)[4]); DeltaExtractorJSON s = new DeltaExtractorJSON(trace); HashMap<String, ThreadInstance> threads = trace.getAllThreads(); List<ExtractedStructure> eList = new ArrayList<>(); List<DeltaAliasCollector> dacList = new ArrayList<>(); for (ThreadInstance thread: threads.values()) { TracePoint tp = thread.getRoot().get(thread.getRoot().size() - 1).getExitPoint(); Reference reference = new Reference(argsMap.get(argsKey)[0], argsMap.get(argsKey)[1], argsMap.get(argsKey)[2], argsMap.get(argsKey)[3]); reference.setCollection(true); // reference.setArray(true); // reference.setFinalLocal(true); // reference.setCreation(true); DeltaAliasCollector dac = new DeltaAliasCollector(); ExtractedStructure e = s.extract(reference, tp, dac); if (e != null) { eList.add(e); dacList.add(dac); System.out.println("add" + eList.size() + ", " + dacList.size()); } System.out.println("---------------------------"); } // TracePoint tp = thread.getRoot().get(thread.getRoot().size() - 1).getExitPoint(); // //ExtractedStructure e = s.extract(new Reference(null, null, "sampleCollection.D", "sampleCollection.C"), tp, new IAliasCollector() { // String ArgmentsKey = "jEditSelect"; //抽出したいデルタの引数を格納したMapのkey // ExtractedStructure e = s.extract(new Reference(argsMap.get(ArgmentsKey)[0], argsMap.get(ArgmentsKey)[1], argsMap.get(ArgmentsKey)[2], argsMap.get(ArgmentsKey)[3]), tp, new IAliasCollector() { // @Override // public void addAlias(Alias alias) { // System.out.println(alias.getAliasType().toString() + ":" + alias.getObjectId() +"," + alias.getIndex() + "," + alias.getMethodSignature() + "," + alias.getLineNo()); // } // @Override // public void changeTrackingObject(String from, String to) { // System.out.println("Change:" + from + " => " + to); // } // }); // TracePoint tp = thread.getRoot().get(thread.getRoot().size() - 1).getExitPoint(); // ExtractedStructure e = s.extract(new Reference(argsMap.get(argsKey)[0], argsMap.get(argsKey)[1], argsMap.get(argsKey)[2], argsMap.get(argsKey)[3]), tp, new IAliasCollector() { // //ExtractedStructure e = s.extract(new Reference(candId1, candId2, argsMap.get(ArgmentsKey)[2], argsMap.get(ArgmentsKey)[3]), tp, new IAliasCollector() { // @Override // public void addAlias(Alias alias) { // System.out.println(alias.getAliasType().toString() + ":" + alias.getObjectId() +"," + alias.getIndex() + "," + alias.getMethodSignature() + "," + alias.getLineNo()); // } // @Override // public void changeTrackingObject(String from, String to) { // System.out.println("Change:" + from + " => " + to); // } // }); // TraceJSON trace = new TraceJSON("traces\\_finalLocal.txt"); // DeltaExtractorJSON s = new DeltaExtractorJSON(trace); // HashMap<String, ThreadInstance> threads = trace.getAllThreads(); // ThreadInstance thread = threads.values().iterator().next(); // TracePoint tp = thread.getRoot().get(thread.getRoot().size() - 1).getExitPoint(); // ExtractedStructure e = s.extract(new Reference(null, null, "finalLocal.Main$1Test", "finalLocal.Main$A"), tp); // TraceJSON trace = new TraceJSON("traces\\__arraySample.txt"); // DeltaExtractorJSON s = new DeltaExtractorJSON(trace); // HashMap<String, ThreadInstance> threads = trace.getAllThreads(); // for (ThreadInstance thread: threads.values()) { // TracePoint tp = thread.getRoot().get(thread.getRoot().size() - 1).getExitPoint(); // ExtractedStructure e = s.extract(new Reference(null, null, "arraySample.D", "arraySample.C"), tp); // s.extract(e.getDelta().getSrcSide().get(2), e.getCoordinator().getEntryPoint()); // break; // } // TraceJSON trace = new TraceJSON("traces\\__arraySample.txt"); // DeltaExtractorJSON s = new DeltaExtractorJSON(trace); // HashMap<String, ThreadInstance> threads = trace.getAllThreads(); // ThreadInstance thread = threads.values().iterator().next(); // TracePoint tp = thread.getRoot().get(thread.getRoot().size() - 1).getExitPoint(); // Reference ref = new Reference(null, null, "[Ljava.lang.Object;", "arraySample.B"); // ref.setArray(true); // ExtractedStructure e = s.extract(ref, tp); // TraceJSON trace = new TraceJSON("traces\\_threadSample.txt"); // DeltaExtractor s = new DeltaExtractorJSON(trace); // HashMap<String, ThreadInstance> threads = trace.getAllThreads(); // Iterator<ThreadInstance> it = threads.values().iterator(); // it.next(); // it.next(); // ThreadInstance thread = it.next(); // TracePoint tp = thread.getRoot().get(thread.getRoot().size() - 1).getExitPoint(); // ExtractedStructure e = s.extract(new Reference(null, null, "threadSample.D", "threadSample.C"), tp); // DeltaExtractor s = new DeltaExtractor("documents\\finalLocal.txt"); // ExtractedStructure es = s.extract(); // s.extract("framework.RWT.RWTFrame3D", // "fight3D.CharacterSelectContainer"); // s.extract("framework.B", "application.SubC"); // s.extract("application.SubA", "framework.B"); // FrameworkUsage usage = extractor.extract("framework.B", // "application.SubC"); // FrameworkUsage usage = extractor.extract("application.SubA", // "framework.B"); // s.extract("framework.model3D.Object3D", // "javax.media.j3d.TransformGroup"); // s.extract("fight3D.Character", "fight3D.WeaponModel"); // s.extract("test.E","test.C"); // ExtractedStructure e = s.extract(new Reference("finalLocal.Main$1Test", "finalLocal.Main$A", null, null)); // --------------- Eclipse Core --------------- // DeltaExtractor s = new DeltaExtractor("documents\\eclipse-Core.txt"); // CallTree m = null; // ExtractedStructure e = null; // do { // if (m == null) { // m = s.getCallTreeBackwardly("public boolean java.util.HashSet.add("); // } else { // m = s.getCallTreeBackwardly("public boolean java.util.HashSet.add(", m.getStartLine() - 1); // } // if (m != null) { // ArrayList<ObjectReference> argments = m.getArguments(); // System.out.println(m.getSignature() + ":" + argments.size()); // for (int i = 0; i < argments.size(); i++) { // if (argments.get(i).getActualType().equals("org.eclipse.ui.internal.registry.ActionSetDescriptor")) { // e = s.extract(m, argments.get(i)); // break; // } // } // } // } while (m != null); // --------------- Eclipse UI --------------- // DeltaExtractor s = new DeltaExtractor("documents\\eclipse-ContextMenu.txt"); // CallTree m = null; // ExtractedStructure e = null; // do { // if (m == null) { // m = s.getCallTreeBackwardly("private void org.eclipse.jface.action.ContributionManager.addToGroup("); // } else { // m = s.getCallTreeBackwardly("private void org.eclipse.jface.action.ContributionManager.addToGroup(", m.getStartLine() - 1); // } // if (m != null) { // ArrayList<ObjectReference> argments = m.getArguments(); // System.out.println(m.getSignature() + ":" + argments.size()); // for (int i = 0; i < argments.size(); i++) { // if (argments.get(i).getActualType().equals("org.eclipse.ui.internal.PluginActionCoolBarContributionItem")) { // e = s.extract(m, argments.get(i)); // break; // } // } // } // } while (m != null); /////////////////////////////////////////////////////////////////////////////////// // // // ICSME2015投稿用 // // // /////////////////////////////////////////////////////////////////////////////////// // --------------- Eclipse (2014/12/6 プログラム理解実証実験 課題1, 以下の1回目のデルタ) --------------- // DeltaExtractor s = new DeltaExtractor("documents\\eclipse-Console2.txt"); // ExtractedStructure e = null; // do { // System.out.println(System.nanoTime() - time); // if (e == null) { // e = s.extract(new Reference(null, null, "org.eclipse.jface.action.ActionContributionItem", // "org.eclipse.ui.console.actions.ClearOutputAction")); // } else { // e = s.extract(new Reference(null, null, "org.eclipse.jface.action.ActionContributionItem", // "org.eclipse.ui.console.actions.ClearOutputAction"), e.getCreationCallTree().getEntryPoint()); // } // } while (e != null); // --------------- Eclipse (2014/12/19-20 プログラム理解実証実験 課題2, 以下の2回目のデルタ) --------------- // DeltaExtractor s = new DeltaExtractor("documents\\eclipse-JavaEditor.txt"); // ExtractedStructure e = null; // do { // System.out.println(System.nanoTime() - time); // if (e == null) { // e = s.extract(new Reference(null, null, "org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor$AdaptedSourceViewer", // "org.eclipse.jface.text.contentassist.ContentAssistant")); // } else { // e = s.extract(new Reference(null, null, "org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor$AdaptedSourceViewer", // "org.eclipse.jface.text.contentassist.ContentAssistant"), e.getCreationCallTree().getEntryPoint()); // } // } while (e != null); // --------------- ArgoUML (2014/12/19-20 プログラム理解実証実験 課題3, 以下の1回目のデルタ) --------------- // DeltaExtractor s = new DeltaExtractor("documents\\ArgoUML-3.txt"); // MethodExecution m = null; // ExtractedStructure e = null; // do { // System.out.println(System.nanoTime() - time); // if (m == null) { // m = s.getLastMethodExecution("protected void org.tigris.gef.base.SelectionManager.addFig("); // } else { // m = s.getLastMethodExecution("protected void org.tigris.gef.base.SelectionManager.addFig(", m.getEntryPoint()); // } // if (m != null) { // ArrayList<ObjectReference> argments = m.getArguments(); // System.out.println(m.getSignature() + ":" + argments.size()); // for (int i = 0; i < argments.size(); i++) { // if (argments.get(i).getActualType().equals("org.argouml.uml.diagram.static_structure.ui.FigClass")) { // e = s.extract(m.getEntryPoint(), argments.get(i)); // break; // } // } // } // } while (m != null); // --------------- ArgoUML (2014/12/19-20 プログラム理解実証実験 課題4, 以下の3回目のデルタ) --------------- // DeltaExtractor s = new DeltaExtractor("documents\\ArgoUML-3.txt"); // MethodExecution m = null; // ExtractedStructure e = null; // do { // System.out.println(System.nanoTime() - time); // if (m == null) { // m = s.getLastMethodExecution("public abstract interface boolean java.util.List.add("); // } else { // m = s.getLastMethodExecution("public abstract interface boolean java.util.List.add(", m.getEntryPoint()); // } // if (m != null) { // ArrayList<ObjectReference> argments = m.getArguments(); // System.out.println(m.getSignature() + ":" + argments.size()); // for (int i = 0; i < argments.size(); i++) { // if (argments.get(i).getActualType().equals("org.argouml.uml.diagram.static_structure.ui.FigClass")) { // e = s.extract(m.getEntryPoint(), argments.get(i)); // break; // } // } // } // } while (m != null); /////////////////////////////////////////////////////////////////////////////////// // // // SANER2016投稿用 // // // /////////////////////////////////////////////////////////////////////////////////// // --------------- Eclipse SWT (2015/10/31 アーキテクチャ理解実証実験 課題1) --------------- // 問1(1stデルタ), 以下のデルタ // DeltaExtractor s = new DeltaExtractor("documents\\eclipse-Console2.txt"); // MethodExecution m = null; // ExtractedStructure e = null; // System.out.println(System.nanoTime() - time); // do { // if (m == null) { // m = s.getLastMethodExecution("public void org.eclipse.jface.action.Action.runWithEvent("); // } else { // TracePoint nextTp = m.getEntryPoint(); // nextTp.stepBackOver(); // m = s.getLastMethodExecution("public void org.eclipse.jface.action.Action.runWithEvent(", nextTp); // } // if (m != null) { // ArrayList<ObjectReference> argments = m.getArguments(); // for (int i = 0; i < argments.size(); i++) { // if (argments.get(i).getActualType().equals("org.eclipse.swt.widgets.Event")) { // System.out.println(System.nanoTime() - time); // e = s.extract(m.getEntryPoint(), argments.get(i)); // break; // } // } // } // } while (e == null); // System.out.println(System.nanoTime() - time); // System.out.println("//////////////////////////////////"); // 問2,3(2ndデルタ), 問1の続き, 以下のデルタ // Reference nextTarget = e.getDelta().getSrcSide().get(6); // e = s.extract(nextTarget, e.getCoordinator().getEntryPoint()); // --------------- Eclipse JDT (2015/10/31 アーキテクチャ理解実証実験 課題2) --------------- // 問1,2(1stデルタ), 以下のデルタ(抽出としては2回分) // DeltaExtractor s = new DeltaExtractor("documents\\eclipse-Debug1.txt"); // MethodExecution m = null; // // System.out.println(System.nanoTime() - time); // ExtractedStructure e = null; // do { // if (m == null) { // m = s.getLastMethodExecution("public boolean org.eclipse.jdt.internal.debug.core.breakpoints.JavaBreakpoint.handleBreakpointEvent("); // } else { // TracePoint nextTp = m.getEntryPoint(); // nextTp.stepBackOver(); // m = s.getLastMethodExecution("public boolean org.eclipse.jdt.internal.debug.core.breakpoints.JavaBreakpoint.handleBreakpointEvent(", nextTp); // } // if (m != null) { // ArrayList<ObjectReference> argments = m.getArguments(); // for (int i = 0; i < argments.size(); i++) { // if (argments.get(i).getActualType().equals("org.eclipse.jdi.internal.event.BreakpointEventImpl")) { // System.out.println(System.nanoTime() - time); // e = s.extract(m.getEntryPoint(), argments.get(i)); // break; // } // } // } // } while (e == null); // Reference nextTarget = e.getDelta().getDstSide().get(3); // EventDispatcher$1 -> EventSetImpl // e = s.extract(nextTarget, m.getEntryPoint()); // System.out.println(System.nanoTime() - time); // System.out.println("//////////////////////////////////"); // // // 問3(2ndデルタ), 以下のデルタ // MethodExecution m2 = e.getCoordinator().getChildren().get(21); // e = s.extract(m2.getExitPoint(), new ObjectReference("859038530", "org.eclipse.jdi.internal.jdwp.JdwpCommandPacket")); // System.out.println(System.nanoTime() - time); // System.out.println("//////////////////////////////////"); // // // // 問4(3rdデルタ), 以下のデルタ // m = e.getCoordinator().getChildren().get(0).getChildren().get(1).getChildren().get(4); // Reference lastTarget = new Reference(e.getDelta().getDstSide().get(1).getSrcObject(), e.getDelta().getDstSide().get(0).getDstObject()); // lastTarget.setCollection(true); // e = s.extract(lastTarget, m.getExitPoint()); // --------------- ArgoUML + GEF (2014/12/19-20 プログラム理解実証実験 課題3, 以下のデルタ) --------------- // DeltaExtractor s = new DeltaExtractor("documents\\ArgoUML-3.txt"); // MethodExecution m = null; // ExtractedStructure e = null; // System.out.println(System.nanoTime() - time); // m = s.getLastMethodExecution("public void org.argouml.uml.diagram.ui.ActionRemoveFromDiagram.actionPerformed("); // m = s.getLastMethodExecution("public java.util.Vector<org.tigris.gef.presentation.Fig> org.tigris.gef.base.SelectionManager.getFigs("); // if (m != null) { // System.out.println(System.nanoTime() - time); // Reference r = new Reference(null, null, "java.util.ArrayList", "org.argouml.uml.diagram.static_structure.ui.SelectionClass"); // r.setCollection(true); // e = s.extract(r, m.getEntryPoint()); // } // System.out.println(System.nanoTime() - time); // System.out.println("//////////////////////////////////"); // // s.extractArg(e.getCoodinator(), 123456789); // // s.getCallHistory(e.getCoodinator()); startDeltaViewer(eList.get(0), dacList.get(0)); } /* * 正しい結果 * ===== Marked Methods ===== void worstCase.O.passL(worstCase.L) worstCase.L worstCase.I.getL() worstCase.L worstCase.K.getL() worstCase.M worstCase.L.getM() worstCase.K worstCase.J.getK() void worstCase.N.passI(worstCase.I) void worstCase.P.setM(worstCase.M) ===== Unmarked Methods ===== worstCase.F worstCase.C.getF() worstCase.E worstCase.D.getE() worstCase.A() public worstCase.M() worstCase.F() void worstCase.A.m() public static void worstCase.main.main(java.lang.String[]) worstCase.G() worstCase.H() worstCase.I() worstCase.B() worstCase.C() worstCase.D() worstCase.E() worstCase.N() worstCase.O() worstCase.P() worstCase.F worstCase.E.getF() worstCase.J() worstCase.K() worstCase.L() worstCase.I worstCase.F.getI() worstCase.H worstCase.G.getH() worstCase.I worstCase.H.getI() worstCase.I worstCase.B.getI() */ // HashSet<String> all = trace.getAllMethodSignatures(); // System.out.println("===== All Methods ====="); // for (String method: all) { // System.out.println(method); // } /* * 正しい結果 * ===== All Methods ===== worstCase.F worstCase.C.getF() worstCase.E worstCase.D.getE() worstCase.A() void worstCase.P.setM(worstCase.M) public worstCase.M() worstCase.M worstCase.L.getM() worstCase.L worstCase.I.getL() worstCase.L worstCase.K.getL() void worstCase.N.passI(worstCase.I) void worstCase.A.m() worstCase.F() public static void worstCase.main.main(java.lang.String[]) worstCase.G() void worstCase.O.passL(worstCase.L) worstCase.H() worstCase.I() worstCase.B() worstCase.C() worstCase.D() worstCase.E() worstCase.N() worstCase.O() worstCase.K worstCase.J.getK() worstCase.F worstCase.E.getF() worstCase.P() worstCase.J() worstCase.K() worstCase.I worstCase.F.getI() worstCase.I worstCase.H.getI() worstCase.H worstCase.G.getH() worstCase.L() worstCase.I worstCase.B.getI() */ // ArrayList<MethodExecution> specified = trace.getMethodExecutions("void"); // System.out.println("===== Specified Methods ====="); // for (MethodExecution method: specified) { // System.out.println(method.getSignature()); // } /* * 正しい結果 * ===== Specified Methods ===== void worstCase.A.m() void worstCase.N.passI(worstCase.I) void worstCase.O.passL(worstCase.L) void worstCase.P.setM(worstCase.M) * */ // HashMap<String, ArrayList<MethodExecution>> allExecutions = trace.getAllMethodExecutions(); // System.out.println("===== All Methods and Executions ====="); // for (String method: allExecutions.keySet()) { // System.out.println(method + ":" + allExecutions.get(method).size()); // } /* * 正しい結果 * ===== All Methods and Executions ===== worstCase.F worstCase.C.getF():1 worstCase.E worstCase.D.getE():1 worstCase.A():1 void worstCase.P.setM(worstCase.M):1 public worstCase.M():1 worstCase.M worstCase.L.getM():1 worstCase.L worstCase.I.getL():1 worstCase.L worstCase.K.getL():1 void worstCase.N.passI(worstCase.I):1 void worstCase.A.m():1 worstCase.F():1 public static void worstCase.main.main(java.lang.String[]):1 worstCase.G():1 void worstCase.O.passL(worstCase.L):1 worstCase.H():1 worstCase.I():1 worstCase.B():1 worstCase.C():1 worstCase.D():1 worstCase.E():1 worstCase.N():1 worstCase.O():1 worstCase.K worstCase.J.getK():1 worstCase.F worstCase.E.getF():1 worstCase.P():1 worstCase.J():1 worstCase.K():1 worstCase.I worstCase.F.getI():1 worstCase.I worstCase.H.getI():1 worstCase.H worstCase.G.getH():1 worstCase.L():1 worstCase.I worstCase.B.getI():1 */ // System.out.println("===== All Statements Forward ====="); // trace.traverseStatementsInTrace(new IStatementVisitor() { // @Override // public boolean preVisitStatement(Statement statement) { // if (statement instanceof FieldUpdate) { // if(trace.isNull((((FieldUpdate) statement).getValueObjId()))) { // // } // } // System.out.println("pre:" + statement.getClass().getName() + ":" + statement.getTimeStamp()); // return false; // } // @Override // public boolean postVisitStatement(Statement statement) { // System.out.println("post:" + statement.getClass().getName() + ":" + statement.getTimeStamp()); // return false; // } // }); /* * 正しい結果 * ===== All Statements Forward ===== pre:org.ntlab.trace.BlockEnter:1699552992988213 post:org.ntlab.trace.BlockEnter:1699552992988213 pre:org.ntlab.trace.MethodInvocation:1699552993730471 pre:org.ntlab.trace.MethodInvocation:1699552994339441 pre:org.ntlab.trace.MethodInvocation:1699552994979793 pre:org.ntlab.trace.MethodInvocation:1699552995575363 pre:org.ntlab.trace.MethodInvocation:1699552996163881 pre:org.ntlab.trace.MethodInvocation:1699552996774613 pre:org.ntlab.trace.MethodInvocation:1699552997363836 pre:org.ntlab.trace.MethodInvocation:1699552997949532 pre:org.ntlab.trace.MethodInvocation:1699552998548628 pre:org.ntlab.trace.MethodInvocation:1699552999050402 pre:org.ntlab.trace.MethodInvocation:1699552999466490 pre:org.ntlab.trace.MethodInvocation:1699552999875526 pre:org.ntlab.trace.MethodInvocation:1699553000173135 post:org.ntlab.trace.MethodInvocation:1699553000173135 pre:org.ntlab.trace.FieldUpdate:1699553000225322 post:org.ntlab.trace.FieldUpdate:1699553000225322 post:org.ntlab.trace.MethodInvocation:1699552999875526 pre:org.ntlab.trace.FieldUpdate:1699553000259878 post:org.ntlab.trace.FieldUpdate:1699553000259878 post:org.ntlab.trace.MethodInvocation:1699552999466490 pre:org.ntlab.trace.FieldUpdate:1699553000290908 post:org.ntlab.trace.FieldUpdate:1699553000290908 post:org.ntlab.trace.MethodInvocation:1699552999050402 pre:org.ntlab.trace.FieldUpdate:1699553000331107 post:org.ntlab.trace.FieldUpdate:1699553000331107 post:org.ntlab.trace.MethodInvocation:1699552998548628 pre:org.ntlab.trace.FieldUpdate:1699553000376947 post:org.ntlab.trace.FieldUpdate:1699553000376947 post:org.ntlab.trace.MethodInvocation:1699552997949532 pre:org.ntlab.trace.FieldUpdate:1699553000422435 post:org.ntlab.trace.FieldUpdate:1699553000422435 post:org.ntlab.trace.MethodInvocation:1699552997363836 pre:org.ntlab.trace.FieldUpdate:1699553000463691 post:org.ntlab.trace.FieldUpdate:1699553000463691 post:org.ntlab.trace.MethodInvocation:1699552996774613 pre:org.ntlab.trace.FieldUpdate:1699553000508121 post:org.ntlab.trace.FieldUpdate:1699553000508121 post:org.ntlab.trace.MethodInvocation:1699552996163881 pre:org.ntlab.trace.FieldUpdate:1699553000551845 post:org.ntlab.trace.FieldUpdate:1699553000551845 post:org.ntlab.trace.MethodInvocation:1699552995575363 pre:org.ntlab.trace.FieldUpdate:1699553000596627 post:org.ntlab.trace.FieldUpdate:1699553000596627 post:org.ntlab.trace.MethodInvocation:1699552994979793 pre:org.ntlab.trace.FieldUpdate:1699553000640352 post:org.ntlab.trace.FieldUpdate:1699553000640352 post:org.ntlab.trace.MethodInvocation:1699552994339441 pre:org.ntlab.trace.FieldUpdate:1699553000682666 post:org.ntlab.trace.FieldUpdate:1699553000682666 pre:org.ntlab.trace.MethodInvocation:1699553001472175 pre:org.ntlab.trace.MethodInvocation:1699553002201034 pre:org.ntlab.trace.MethodInvocation:1699553003026510 post:org.ntlab.trace.MethodInvocation:1699553003026510 pre:org.ntlab.trace.FieldUpdate:1699553003101618 post:org.ntlab.trace.FieldUpdate:1699553003101618 post:org.ntlab.trace.MethodInvocation:1699553002201034 pre:org.ntlab.trace.FieldUpdate:1699553003149926 post:org.ntlab.trace.FieldUpdate:1699553003149926 post:org.ntlab.trace.MethodInvocation:1699553001472175 pre:org.ntlab.trace.FieldUpdate:1699553003190477 post:org.ntlab.trace.FieldUpdate:1699553003190477 post:org.ntlab.trace.MethodInvocation:1699552993730471 pre:org.ntlab.trace.MethodInvocation:1699553003253243 pre:org.ntlab.trace.BlockEnter:1699553003273695 post:org.ntlab.trace.BlockEnter:1699553003273695 pre:org.ntlab.trace.FieldAccess:1699553003299083 post:org.ntlab.trace.FieldAccess:1699553003299083 pre:org.ntlab.trace.FieldAccess:1699553003355502 post:org.ntlab.trace.FieldAccess:1699553003355502 pre:org.ntlab.trace.MethodInvocation:1699553003386885 pre:org.ntlab.trace.BlockEnter:1699553003400637 post:org.ntlab.trace.BlockEnter:1699553003400637 pre:org.ntlab.trace.FieldAccess:1699553003436956 post:org.ntlab.trace.FieldAccess:1699553003436956 pre:org.ntlab.trace.MethodInvocation:1699553003482444 pre:org.ntlab.trace.BlockEnter:1699553003500427 post:org.ntlab.trace.BlockEnter:1699553003500427 pre:org.ntlab.trace.FieldAccess:1699553003526169 post:org.ntlab.trace.FieldAccess:1699553003526169 pre:org.ntlab.trace.MethodInvocation:1699553003556141 pre:org.ntlab.trace.BlockEnter:1699553003570951 post:org.ntlab.trace.BlockEnter:1699553003570951 pre:org.ntlab.trace.FieldAccess:1699553003599513 post:org.ntlab.trace.FieldAccess:1699553003599513 post:org.ntlab.trace.MethodInvocation:1699553003556141 pre:org.ntlab.trace.MethodInvocation:1699553003668273 pre:org.ntlab.trace.BlockEnter:1699553003688020 post:org.ntlab.trace.BlockEnter:1699553003688020 pre:org.ntlab.trace.FieldAccess:1699553003715876 post:org.ntlab.trace.FieldAccess:1699553003715876 post:org.ntlab.trace.MethodInvocation:1699553003668273 post:org.ntlab.trace.MethodInvocation:1699553003482444 pre:org.ntlab.trace.MethodInvocation:1699553003805088 pre:org.ntlab.trace.BlockEnter:1699553003818135 post:org.ntlab.trace.BlockEnter:1699553003818135 pre:org.ntlab.trace.FieldAccess:1699553003846345 post:org.ntlab.trace.FieldAccess:1699553003846345 pre:org.ntlab.trace.MethodInvocation:1699553003896769 pre:org.ntlab.trace.BlockEnter:1699553003912989 post:org.ntlab.trace.BlockEnter:1699553003912989 pre:org.ntlab.trace.FieldAccess:1699553003944020 post:org.ntlab.trace.FieldAccess:1699553003944020 post:org.ntlab.trace.MethodInvocation:1699553003896769 pre:org.ntlab.trace.MethodInvocation:1699553004012075 pre:org.ntlab.trace.BlockEnter:1699553004029706 post:org.ntlab.trace.BlockEnter:1699553004029706 pre:org.ntlab.trace.FieldAccess:1699553004082951 post:org.ntlab.trace.FieldAccess:1699553004082951 post:org.ntlab.trace.MethodInvocation:1699553004012075 post:org.ntlab.trace.MethodInvocation:1699553003805088 post:org.ntlab.trace.MethodInvocation:1699553003386885 pre:org.ntlab.trace.MethodInvocation:1699553004208835 pre:org.ntlab.trace.BlockEnter:1699553004228229 post:org.ntlab.trace.BlockEnter:1699553004228229 pre:org.ntlab.trace.FieldAccess:1699553004257849 post:org.ntlab.trace.FieldAccess:1699553004257849 pre:org.ntlab.trace.MethodInvocation:1699553004302631 pre:org.ntlab.trace.BlockEnter:1699553004326962 post:org.ntlab.trace.BlockEnter:1699553004326962 pre:org.ntlab.trace.FieldAccess:1699553004373507 post:org.ntlab.trace.FieldAccess:1699553004373507 pre:org.ntlab.trace.MethodInvocation:1699553004418995 pre:org.ntlab.trace.BlockEnter:1699553004434510 post:org.ntlab.trace.BlockEnter:1699553004434510 pre:org.ntlab.trace.FieldAccess:1699553004461661 post:org.ntlab.trace.FieldAccess:1699553004461661 post:org.ntlab.trace.MethodInvocation:1699553004418995 pre:org.ntlab.trace.MethodInvocation:1699553004515964 pre:org.ntlab.trace.BlockEnter:1699553004526543 post:org.ntlab.trace.BlockEnter:1699553004526543 pre:org.ntlab.trace.FieldAccess:1699553004546994 post:org.ntlab.trace.FieldAccess:1699553004546994 post:org.ntlab.trace.MethodInvocation:1699553004515964 post:org.ntlab.trace.MethodInvocation:1699553004302631 pre:org.ntlab.trace.MethodInvocation:1699553004606587 pre:org.ntlab.trace.BlockEnter:1699553004615402 post:org.ntlab.trace.BlockEnter:1699553004615402 pre:org.ntlab.trace.FieldAccess:1699553004629507 post:org.ntlab.trace.FieldAccess:1699553004629507 pre:org.ntlab.trace.MethodInvocation:1699553004648195 pre:org.ntlab.trace.BlockEnter:1699553004655953 post:org.ntlab.trace.BlockEnter:1699553004655953 pre:org.ntlab.trace.FieldAccess:1699553004670763 post:org.ntlab.trace.FieldAccess:1699553004670763 post:org.ntlab.trace.MethodInvocation:1699553004648195 pre:org.ntlab.trace.MethodInvocation:1699553004703556 pre:org.ntlab.trace.BlockEnter:1699553004712019 post:org.ntlab.trace.BlockEnter:1699553004712019 pre:org.ntlab.trace.FieldUpdate:1699553004728240 post:org.ntlab.trace.FieldUpdate:1699553004728240 post:org.ntlab.trace.MethodInvocation:1699553004703556 post:org.ntlab.trace.MethodInvocation:1699553004606587 post:org.ntlab.trace.MethodInvocation:1699553004208835 post:org.ntlab.trace.MethodInvocation:1699553003253243 */ // Change! // System.out.println("===== All Statements Backward ====="); // TracePoint tp = null; // DeltaAliasCollector dac = new DeltaAliasCollector(); // long restart = 0L; // for(;;) { // tp = trace.traverseStatementsInTraceBackward(new IStatementVisitor() { // @Override // public boolean preVisitStatement(Statement statement) { // System.out.println("pre:" + statement.getThreadNo() + ":" + statement.getTimeStamp()); // if(statement instanceof FieldUpdate) { // FieldUpdate fu = (FieldUpdate) statement; // if(!Trace.isNull(fu.getValueObjId()) && !Trace.isPrimitive(fu.getValueClassName())) { // return true; // } // } // return false; // } // // @Override // public boolean postVisitStatement(Statement statement) { // System.out.println("post:" + statement.getThreadNo() + ":" + statement.getTimeStamp()); // return false; // } // }, restart); // if(tp == null || !tp.isValid()) break; // dex.extract(tp, dac); // Statement statement = tp.getStatement(); // if(statement instanceof MethodInvocation) { // restart = ((MethodInvocation)tp.getStatement()).getCalledMethodExecution().getExitTime(); // } else { // restart = tp.getStatement().getTimeStamp(); // } // } // trace.traverseStatementsInTraceBackward(new IStatementVisitor() { // @Override // public boolean preVisitStatement(Statement statement) { // System.out.println("post:" + statement.getClass().getName() + ":" + statement.getTimeStamp()); // return false; // } // @Override // public boolean postVisitStatement(Statement statement) { // System.out.println("pre:" + statement.getClass().getName() + ":" + statement.getTimeStamp()); // return false; // } // }); private static void startDeltaViewer(ExtractedStructure e, DeltaAliasCollector dac) { // TODO Auto-generated method stub DeltaViewer dv = new DeltaViewer(e, dac); List<Alias> aliasList = new ArrayList<>(dac.getAliasList()); // DeltaViewer dv = new DeltaViewer(e, dac); // List<Alias> aliasList = new ArrayList<>(dac.getAliasList()); // dv.setCoordinatorPoint(1200, 100); dv.init(); // dv.update(); // for(int i = 0; i < aliasList.size(); i++) { // System.out.println(aliasList.get(i).getObjectId() + ", " + aliasList.get(i).getMethodSignature() + " l." + aliasList.get(i).getLineNo() + " : " + aliasList.get(i).getAliasType().toString()); // } for(int i = 0; i <= aliasList.size(); i++) { dv.stepToAnimation(i); // dv.update(); } } private static void traverseMethodExecution(MethodExecution m) { System.out.println(m.getSignature()); for(Statement ms :m.getStatements()) { if(ms instanceof FieldAccess) { System.out.println(((FieldAccess)ms).getFieldName()); } } for(MethodExecution m2: m.getChildren()) { traverseMethodExecution(m2); } } /* * 正しい結果 * ===== All Statements Backward ===== post:org.ntlab.trace.MethodInvocation:1699553003253243 post:org.ntlab.trace.MethodInvocation:1699553004208835 post:org.ntlab.trace.MethodInvocation:1699553004606587 post:org.ntlab.trace.MethodInvocation:1699553004703556 post:org.ntlab.trace.FieldUpdate:1699553004728240 pre:org.ntlab.trace.FieldUpdate:1699553004728240 post:org.ntlab.trace.BlockEnter:1699553004712019 pre:org.ntlab.trace.BlockEnter:1699553004712019 pre:org.ntlab.trace.MethodInvocation:1699553004703556 post:org.ntlab.trace.MethodInvocation:1699553004648195 post:org.ntlab.trace.FieldAccess:1699553004670763 pre:org.ntlab.trace.FieldAccess:1699553004670763 post:org.ntlab.trace.BlockEnter:1699553004655953 pre:org.ntlab.trace.BlockEnter:1699553004655953 pre:org.ntlab.trace.MethodInvocation:1699553004648195 post:org.ntlab.trace.FieldAccess:1699553004629507 pre:org.ntlab.trace.FieldAccess:1699553004629507 post:org.ntlab.trace.BlockEnter:1699553004615402 pre:org.ntlab.trace.BlockEnter:1699553004615402 pre:org.ntlab.trace.MethodInvocation:1699553004606587 post:org.ntlab.trace.MethodInvocation:1699553004302631 post:org.ntlab.trace.MethodInvocation:1699553004515964 post:org.ntlab.trace.FieldAccess:1699553004546994 pre:org.ntlab.trace.FieldAccess:1699553004546994 post:org.ntlab.trace.BlockEnter:1699553004526543 pre:org.ntlab.trace.BlockEnter:1699553004526543 pre:org.ntlab.trace.MethodInvocation:1699553004515964 post:org.ntlab.trace.MethodInvocation:1699553004418995 post:org.ntlab.trace.FieldAccess:1699553004461661 pre:org.ntlab.trace.FieldAccess:1699553004461661 post:org.ntlab.trace.BlockEnter:1699553004434510 pre:org.ntlab.trace.BlockEnter:1699553004434510 pre:org.ntlab.trace.MethodInvocation:1699553004418995 post:org.ntlab.trace.FieldAccess:1699553004373507 pre:org.ntlab.trace.FieldAccess:1699553004373507 post:org.ntlab.trace.BlockEnter:1699553004326962 pre:org.ntlab.trace.BlockEnter:1699553004326962 pre:org.ntlab.trace.MethodInvocation:1699553004302631 post:org.ntlab.trace.FieldAccess:1699553004257849 pre:org.ntlab.trace.FieldAccess:1699553004257849 post:org.ntlab.trace.BlockEnter:1699553004228229 pre:org.ntlab.trace.BlockEnter:1699553004228229 pre:org.ntlab.trace.MethodInvocation:1699553004208835 post:org.ntlab.trace.MethodInvocation:1699553003386885 post:org.ntlab.trace.MethodInvocation:1699553003805088 post:org.ntlab.trace.MethodInvocation:1699553004012075 post:org.ntlab.trace.FieldAccess:1699553004082951 pre:org.ntlab.trace.FieldAccess:1699553004082951 post:org.ntlab.trace.BlockEnter:1699553004029706 pre:org.ntlab.trace.BlockEnter:1699553004029706 pre:org.ntlab.trace.MethodInvocation:1699553004012075 post:org.ntlab.trace.MethodInvocation:1699553003896769 post:org.ntlab.trace.FieldAccess:1699553003944020 pre:org.ntlab.trace.FieldAccess:1699553003944020 post:org.ntlab.trace.BlockEnter:1699553003912989 pre:org.ntlab.trace.BlockEnter:1699553003912989 pre:org.ntlab.trace.MethodInvocation:1699553003896769 post:org.ntlab.trace.FieldAccess:1699553003846345 pre:org.ntlab.trace.FieldAccess:1699553003846345 post:org.ntlab.trace.BlockEnter:1699553003818135 pre:org.ntlab.trace.BlockEnter:1699553003818135 pre:org.ntlab.trace.MethodInvocation:1699553003805088 post:org.ntlab.trace.MethodInvocation:1699553003482444 post:org.ntlab.trace.MethodInvocation:1699553003668273 post:org.ntlab.trace.FieldAccess:1699553003715876 pre:org.ntlab.trace.FieldAccess:1699553003715876 post:org.ntlab.trace.BlockEnter:1699553003688020 pre:org.ntlab.trace.BlockEnter:1699553003688020 pre:org.ntlab.trace.MethodInvocation:1699553003668273 post:org.ntlab.trace.MethodInvocation:1699553003556141 post:org.ntlab.trace.FieldAccess:1699553003599513 pre:org.ntlab.trace.FieldAccess:1699553003599513 post:org.ntlab.trace.BlockEnter:1699553003570951 pre:org.ntlab.trace.BlockEnter:1699553003570951 pre:org.ntlab.trace.MethodInvocation:1699553003556141 post:org.ntlab.trace.FieldAccess:1699553003526169 pre:org.ntlab.trace.FieldAccess:1699553003526169 post:org.ntlab.trace.BlockEnter:1699553003500427 pre:org.ntlab.trace.BlockEnter:1699553003500427 pre:org.ntlab.trace.MethodInvocation:1699553003482444 post:org.ntlab.trace.FieldAccess:1699553003436956 pre:org.ntlab.trace.FieldAccess:1699553003436956 post:org.ntlab.trace.BlockEnter:1699553003400637 pre:org.ntlab.trace.BlockEnter:1699553003400637 pre:org.ntlab.trace.MethodInvocation:1699553003386885 post:org.ntlab.trace.FieldAccess:1699553003355502 pre:org.ntlab.trace.FieldAccess:1699553003355502 post:org.ntlab.trace.FieldAccess:1699553003299083 pre:org.ntlab.trace.FieldAccess:1699553003299083 post:org.ntlab.trace.BlockEnter:1699553003273695 pre:org.ntlab.trace.BlockEnter:1699553003273695 pre:org.ntlab.trace.MethodInvocation:1699553003253243 post:org.ntlab.trace.MethodInvocation:1699552993730471 post:org.ntlab.trace.FieldUpdate:1699553003190477 pre:org.ntlab.trace.FieldUpdate:1699553003190477 post:org.ntlab.trace.MethodInvocation:1699553001472175 post:org.ntlab.trace.FieldUpdate:1699553003149926 pre:org.ntlab.trace.FieldUpdate:1699553003149926 post:org.ntlab.trace.MethodInvocation:1699553002201034 post:org.ntlab.trace.FieldUpdate:1699553003101618 pre:org.ntlab.trace.FieldUpdate:1699553003101618 post:org.ntlab.trace.MethodInvocation:1699553003026510 pre:org.ntlab.trace.MethodInvocation:1699553003026510 pre:org.ntlab.trace.MethodInvocation:1699553002201034 pre:org.ntlab.trace.MethodInvocation:1699553001472175 post:org.ntlab.trace.FieldUpdate:1699553000682666 pre:org.ntlab.trace.FieldUpdate:1699553000682666 post:org.ntlab.trace.MethodInvocation:1699552994339441 post:org.ntlab.trace.FieldUpdate:1699553000640352 pre:org.ntlab.trace.FieldUpdate:1699553000640352 post:org.ntlab.trace.MethodInvocation:1699552994979793 post:org.ntlab.trace.FieldUpdate:1699553000596627 pre:org.ntlab.trace.FieldUpdate:1699553000596627 post:org.ntlab.trace.MethodInvocation:1699552995575363 post:org.ntlab.trace.FieldUpdate:1699553000551845 pre:org.ntlab.trace.FieldUpdate:1699553000551845 post:org.ntlab.trace.MethodInvocation:1699552996163881 post:org.ntlab.trace.FieldUpdate:1699553000508121 pre:org.ntlab.trace.FieldUpdate:1699553000508121 post:org.ntlab.trace.MethodInvocation:1699552996774613 post:org.ntlab.trace.FieldUpdate:1699553000463691 pre:org.ntlab.trace.FieldUpdate:1699553000463691 post:org.ntlab.trace.MethodInvocation:1699552997363836 post:org.ntlab.trace.FieldUpdate:1699553000422435 pre:org.ntlab.trace.FieldUpdate:1699553000422435 post:org.ntlab.trace.MethodInvocation:1699552997949532 post:org.ntlab.trace.FieldUpdate:1699553000376947 pre:org.ntlab.trace.FieldUpdate:1699553000376947 post:org.ntlab.trace.MethodInvocation:1699552998548628 post:org.ntlab.trace.FieldUpdate:1699553000331107 pre:org.ntlab.trace.FieldUpdate:1699553000331107 post:org.ntlab.trace.MethodInvocation:1699552999050402 post:org.ntlab.trace.FieldUpdate:1699553000290908 pre:org.ntlab.trace.FieldUpdate:1699553000290908 post:org.ntlab.trace.MethodInvocation:1699552999466490 post:org.ntlab.trace.FieldUpdate:1699553000259878 pre:org.ntlab.trace.FieldUpdate:1699553000259878 post:org.ntlab.trace.MethodInvocation:1699552999875526 post:org.ntlab.trace.FieldUpdate:1699553000225322 pre:org.ntlab.trace.FieldUpdate:1699553000225322 post:org.ntlab.trace.MethodInvocation:1699553000173135 pre:org.ntlab.trace.MethodInvocation:1699553000173135 pre:org.ntlab.trace.MethodInvocation:1699552999875526 pre:org.ntlab.trace.MethodInvocation:1699552999466490 pre:org.ntlab.trace.MethodInvocation:1699552999050402 pre:org.ntlab.trace.MethodInvocation:1699552998548628 pre:org.ntlab.trace.MethodInvocation:1699552997949532 pre:org.ntlab.trace.MethodInvocation:1699552997363836 pre:org.ntlab.trace.MethodInvocation:1699552996774613 pre:org.ntlab.trace.MethodInvocation:1699552996163881 pre:org.ntlab.trace.MethodInvocation:1699552995575363 pre:org.ntlab.trace.MethodInvocation:1699552994979793 pre:org.ntlab.trace.MethodInvocation:1699552994339441 pre:org.ntlab.trace.MethodInvocation:1699552993730471 post:org.ntlab.trace.BlockEnter:1699552992988213 pre:org.ntlab.trace.BlockEnter:1699552992988213 */ private static void setArgmentsForDeltaExtract(Map map){ String[] test = {null, null, "org.argouml.uml.diagram.static_structure.ui.FigClass","org.tigris.gef.base.LayerPerspectiveMutable", "traces\\ArgoUMLBenchmarkWithMoreStandardClasses.trace"}; map.put("test", test); String[] testVectorAddElement = {null, null, "java.util.Vector", "org.tigris.gef.base.LayerPerspective", "traces\\ArgoUMLBenchmarkWithMoreStandardClasses.trace"}; map.put("testVectorAddElement", testVectorAddElement);//trace.javaに"addElement("に対応するように追加 String[] sample1 = {null, null, "sample1.D", "sample1.C", "traces\\sample1.trace"}; map.put("sample1", sample1); String[] sampleArray = {null, null, "sampleArray.D", "sampleArray.C", "traces\\sampleArray.trace"}; map.put("sampleArray", sampleArray); String[] sampleCollection = {null, null, "sampleCollection.D", "sampleCollection.C", "traces\\sampleCollection.trace"}; map.put("sampleCollection", sampleCollection); String[] sampleCreate = {null, null, "sampleCreate.D", "sampleCreate.C", "traces\\sampleCreate.trace"}; map.put("sampleCreate", sampleCreate); String[] sampleStatic = {null, null, "sampleStatic.D", "sampleStatic.C", "traces\\sampleStatic.trace"}; map.put("sampleStatic", sampleStatic); String[] worstCase = {null, null, "worstCase.P", "worstCase.M", "traces/_worstCase.txt"}; map.put("worstCase", worstCase); // String[] ArgoUMLSelect0_1 = {"1994249754", "1141430801", "java.util.ArrayList", "org.argouml.uml.diagram.static_structure.ui.SelectionClass","traces\\ArgoUMLBenchmarkWithMoreStandardClasses.trace"}; map.put("ArgoUMLSelect0_1", ArgoUMLSelect0_1); String[] ArgoUMLSelect0_1 = {"1994249754", "1141430801", null, null,"traces\\ArgoUMLBenchmarkWithMoreStandardClasses.trace"}; map.put("ArgoUMLSelect0_1", ArgoUMLSelect0_1); /*Vector.addElemnt()に対応済み*/String[] ArgoUMLDelete0_2 = {"1784213708", "1337038091", "java.util.Vector", "org.argouml.uml.diagram.static_structure.ui.FigClass", "traces\\ArgoUMLBenchmarkWithMoreStandardClasses.trace"}; map.put("ArgoUMLDelete0_2", ArgoUMLDelete0_2); /*更に過去mouse.Pressed(), mouseReleased()*/String[] ArgoUMLPlace1_1 = {null, null, "java.util.ArrayList", "org.argouml.uml.diagram.static_structure.ui.FigClass", "traces\\ArgoUMLBenchmarkWithMoreStandardClasses.trace"}; map.put("ArgoUMLPlace1_1", ArgoUMLPlace1_1); String[] ArgoUMLSelect1_2 = {"1994249754", "1141430801", "java.util.ArrayList", "org.argouml.uml.diagram.static_structure.ui.SelectionClass", "traces\\ArgoUMLBenchmarkWithMoreStandardClasses.trace"}; map.put("ArgoUMLSelect1_2", ArgoUMLSelect1_2); String[] jEditSelect2_1 = {"932187140", "1572482885", "java.util.ArrayList", "org.gjt.sp.jedit.textarea.Selection$Range", "traces\\jEditBenchmarkWithMoreStandardClasses.trace"}; map.put("jEditSelect2_1", jEditSelect2_1); /*List.toArray()に対応させる必要がある?*/String[] jEditDelete2_2 = {null, null, "org.gjt.sp.jedit.buffer.ContentManager", "java.util.ArrayList", "traces\\jEditBenchmarkWithMoreStandardClasses.trace"}; map.put("jEditDelete2_2", jEditDelete2_2); String[] jHotDrawSelect3_1 = {"361298449", "212532447", "java.util.LinkedHashSet", "org.jhotdraw.draw.RectangleFigure", "traces\\jHotDrawBenchmarkWithMoreStandardClasses.trace"}; map.put("jHotDrawSelect3_1", jHotDrawSelect3_1); String[] jHotDrawMove3_2 = {"778703711", "212532447", "org.jhotdraw.draw.tool.DefaultDragTracker", "org.jhotdraw.draw.RectangleFigure", "traces\\jHotDrawBenchmarkWithMoreStandardClasses.trace"}; map.put("jHotDrawMove3_2", jHotDrawMove3_2); /*不明*/String[] jHotDrawMove3_2_1 = {null, null, "java.util.ArrayList", "org.jhotdraw.draw.RectangleFigure", "traces\\jHotDrawBenchmarkWithMoreStandardClasses.trace"}; map.put("jHotDrawMove3_2_1", jHotDrawMove3_2_1); String[] jHotDrawPlace4_1 = {"1284329882", "212532447", "java.util.HashMap", "org.jhotdraw.draw.RectangleFigure", "traces\\jHotDrawBenchmarkWithMoreStandardClasses.trace"}; map.put("jHotDrawPlace4_1", jHotDrawPlace4_1); String[] jHotDrawSelect4_2 = {"361298449", "212532447", "java.util.LinkedHashSet", "org.jhotdraw.draw.RectangleFigure", "traces\\jHotDrawBenchmarkWithMoreStandardClasses.trace"}; map.put("jHotDrawSelect4_2", jHotDrawSelect4_2); } }