private void PerformTaintAnalysis(PerformAnalysisRequest request, IEnumerable <ResolvedMethod <int> > starts) { var sourceFilterSink = new SourceFilterSink(myProgramBuilder.GetProgram()); var sfsResults = sourceFilterSink.Analyze(starts) .Select(trace => trace.ToList()).ToList(); myResultsCache.StoreResult(AnalysisType.TaintChecking, sfsResults); }
private Task RunAnalysis(PerformAnalysisRequest request) { myProgramLock = true; return(Task.Run(() => { try { var program = myProgramBuilder.GetProgram(); var starts = PerformTypePropagation(out var secondaryEntities); switch (request.Analysis) { case AnalysisType.TaintChecking: PerformTaintAnalysis(request, starts); break; } Task.Run(() => { foreach (var secondaryEntity in secondaryEntities) { secondaryEntity.DropAllCollectedPrimaries(); } }); } catch (Exception e) { Console.WriteLine(e); throw; } myProgramLock = false; GC.Collect(); })); }
public void PerformAnalysis(AnalysisType type) { var request = new PerformAnalysisRequest(type); myClient.EnqueueRequest(request, _ => {}); }