Example #1
0
        /// <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();
        }
Example #2
0
        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);
        }