public override PexResultTracking GetResultTreatment(PexTrackingThread thread, int callId, IMethodSignature methodSignature, TypeEx[] varArgTypes, bool hasDerivedResult) { Dump("in GetResultTreatment============================="); // track uninstrumented method calls if (!hasDerivedResult) { var method = methodSignature as Method; if (method.FullName.Equals(_trackMethod.FullName)) { if (track) { Dump("start to track " + method.FullName); TrackingMethods.Add(method); Dump("end GetResultTreatment============================="); return(PexResultTracking.Track); } Dump("method " + method.FullName + " is not tracked!"); } // IssueTrackDatabase db; // if (host.TryGetService<IssueTrackDatabase>(out db)) // { //// host.Log.Dump("size", "size", "uninstrumented methods: " + db.UnInstrumentedMethods.Count); // foreach (var uninstrumentedMethod in db.UnInstrumentedMethods) // { //// host.Log.Dump("Method", "Method", "uninstrumented methods: " + uninstrumentedMethod.Method.FullName); //// host.Log.Dump("Method", "Method2", "methods: " + method.Definition.FullName); // if (uninstrumentedMethod.Method.FullName.Equals(method.FullName)) // { //// host.Log.Dump("Method", "track", "track: " + method.Definition.FullName); // if (TrackingMethods.Add(method)) // { // return PexResultTracking.Track; // } // } // } // } } Dump("end GetResultTreatment============================="); return(PexResultTracking.ConcreteOrDerived); }
public override PexArgumentTracking GetArgumentTreatment(PexTrackingThread thread, int frameId, Method method) { Dump("in GetArgumentTreatment====================="); Dump("thread.ThreadId: " + thread.ThreadId + " frameid: " + frameId + " method: " + method); if (trackArg && methodForTrackingArg != null && method.Equals(methodForTrackingArg)) { trackArg = false; methodForTrackingArg = null; Dump("track parameters of " + method); Dump("end GetArgumentTreatment====================="); Dump(""); return(PexArgumentTracking.Track); } Dump("end GetArgumentTreatment====================="); Dump(""); return(PexArgumentTracking.Derived); }
public override PexArgumentTracking GetArgumentTreatment(PexTrackingThread thread, int frameId, Method method) { if (trackedFrameId >= 0) { return(PexArgumentTracking.Derived); } else if (this.depth != this.level) { return(PexArgumentTracking.Concrete); } else { //let's reset the state before the execution of the method //((PexTrackingState)thread.State).RestartObjectFieldMaps(); // let's start to collect that path condition from scratch this.PathConditionBuilder.Clear(); _thread = thread; trackedFrameId = frameId; /* * TypeEx declaringType; * if (method.TryGetDeclaringType(out declaringType)) * foreach (var f in declaringType.DeclaredStaticFields) * { * Term symbol = this.TermManager.Symbol( * new PexTrackedStaticFieldId(f)); * thread.State.StoreStaticField(f, symbol); * } */ IState state = thread.State; state.StartTrackingEffects(this); this.newObjects.Clear(); //changed from track to derived so that we don't introduce symbolic values for arguments and object fields return(PexArgumentTracking.Derived); } }
public override PexResultTracking GetResultTreatment(PexTrackingThread thread, int callId, IMethodSignature methodSignature, TypeEx[] varArgTypes, bool hasDerivedResult) { // track uninstrumented method calls if (!hasDerivedResult) { var method = methodSignature as Method; if (method.FullName.Equals(_trackMethod.FullName)) { if (track) { Dump("start to track " + method.FullName); TrackingMethods.Add(method); return PexResultTracking.Track; } Dump("method " + method.FullName + " is not tracked!"); } // IssueTrackDatabase db; // if (host.TryGetService<IssueTrackDatabase>(out db)) // { //// host.Log.Dump("size", "size", "uninstrumented methods: " + db.UnInstrumentedMethods.Count); // foreach (var uninstrumentedMethod in db.UnInstrumentedMethods) // { //// host.Log.Dump("Method", "Method", "uninstrumented methods: " + uninstrumentedMethod.Method.FullName); //// host.Log.Dump("Method", "Method2", "methods: " + method.Definition.FullName); // if (uninstrumentedMethod.Method.FullName.Equals(method.FullName)) // { //// host.Log.Dump("Method", "track", "track: " + method.Definition.FullName); // if (TrackingMethods.Add(method)) // { // return PexResultTracking.Track; // } // } // } // } } return PexResultTracking.ConcreteOrDerived; }
public override PexArgumentTracking GetArgumentTreatment(PexTrackingThread thread, int frameId, Method method) { Dump("in GetArgumentTreatment====================="); Dump("thread.ThreadId: " + thread.ThreadId + " frameid: " + frameId + " method: " + method); if (trackArg && methodForTrackingArg != null && method.Equals(methodForTrackingArg)) { trackArg = false; methodForTrackingArg = null; Dump("track parameters of " + method); Dump("end GetArgumentTreatment====================="); Dump(""); return PexArgumentTracking.Track; } Dump("end GetArgumentTreatment====================="); Dump(""); return PexArgumentTracking.Derived; }
public override PexArgumentTracking GetArgumentTreatment(PexTrackingThread thread, int frameId, Method method) { if (trackedFrameId >= 0) return PexArgumentTracking.Derived; else if (this.depth != this.level) return PexArgumentTracking.Concrete; else { //let's reset the state before the execution of the method //((PexTrackingState)thread.State).RestartObjectFieldMaps(); // let's start to collect that path condition from scratch this.PathConditionBuilder.Clear(); _thread = thread; trackedFrameId = frameId; /* TypeEx declaringType; if (method.TryGetDeclaringType(out declaringType)) foreach (var f in declaringType.DeclaredStaticFields) { Term symbol = this.TermManager.Symbol( new PexTrackedStaticFieldId(f)); thread.State.StoreStaticField(f, symbol); } */ IState state = thread.State; state.StartTrackingEffects(this); this.newObjects.Clear(); //changed from track to derived so that we don't introduce symbolic values for arguments and object fields return PexArgumentTracking.Derived; } }