/// <summary> /// Clears the inner fields before new computation is performed. /// </summary> private void clearComputation() { AnalysisWarningHandler.ResetWarnings(); IsFirstPhaseStarted = false; IsSecondPhaseStarted = false; IsFirstPhaseFinished = false; IsSecondPhaseFinished = false; analysisWarnings = null; securityWarnings = null; secondPhaseWarnings = null; programPointGraph = null; firstPhaseAnalysis = null; secondPhaseAnalysis = null; // Force garbage collecting GC.Collect(); GC.WaitForPendingFinalizers(); }
public static ResultModel Run(string phpCode, AnalysisModel analysisModel) { string fileName = @"\UserInput\userInput.php"; SyntaxParser parser = InitializeParser(phpCode, fileName); var cfg = ControlFlowGraph.ControlFlowGraph.FromSource(parser.Ast, new FileInfo(fileName)); var result = new ResultModel(phpCode); AnalysisWarningHandler.ResetWarnings(); if (analysisModel.RunVerification) { result.Output = RunVerification(cfg, fileName, analysisModel.GetMemoryModel()); } if (analysisModel.RunMetrics) { RunMetrics(parser, analysisModel, result); } result.LoadWarnings(); return(result); }