public object BeforeExploration(IPexExplorationComponent host) { MessageBox.Show("BeforeExploration"); // Subscribing to constraint problem handler host.Log.ProblemHandler += (problemEventArgs) => { var location = problemEventArgs.FlippedLocation.Method == null ? "" : (problemEventArgs.FlippedLocation.Method.FullName + ":" + problemEventArgs.FlippedLocation.Offset); Z3CallLocations.Add(location); }; // Subscribing to test emitting handler host.Log.GeneratedTestHandler += (generatedTestEventArgs) => { // Getting the number of the corresponding run var run = generatedTestEventArgs.GeneratedTest.Run; // Storing the result of the test (this is called before AfterRun) EmittedTestResult.Add(run, new Tuple <bool, string>(generatedTestEventArgs.GeneratedTest.IsFailure, generatedTestEventArgs.GeneratedTest.MethodCode)); }; return(null); }
public void AfterExploration(IPexExplorationComponent host, object data) { foreach (var vertex in Vertices.Values) { // Modifying shape based on Z3 calls if (Z3CallLocations.Contains(vertex.MethodName + ":" + vertex.ILOffset)) { vertex.Shape = SENode.NodeShape.Ellipse; } // Adding the path condition var t = PrettyPathConditionTasks[vertex.Id]; t.Wait(); vertex.PathCondition = t.Result; } foreach (var vertex in Vertices.Values) { // Adding the incremental path condition if (ParentNodes.ContainsKey(vertex.Id)) { vertex.IncrementalPathCondition = CalculateIncrementalPathCondition(vertex.PathCondition, Vertices[ParentNodes[vertex.Id]].PathCondition); } else { // If the node is the first one (has no parents), then the incremental equals the full PC vertex.IncrementalPathCondition = vertex.PathCondition; } } // Adding vertices and edges to the graph Graph.AddVertexRange(Vertices.Values); foreach (var edgeDictionary in Edges.Values) { Graph.AddEdgeRange(edgeDictionary.Values); } // Checking if temporary SEViz folder exists if (!Directory.Exists(Path.GetTempPath() + "SEViz")) { var dir = Directory.CreateDirectory(Path.GetTempPath() + "SEViz"); } // Getting the temporary folder var tempDir = Path.GetTempPath() + "SEViz\\"; // Serializing the graph into graphml SEGraph.Serialize(Graph, tempDir); }