コード例 #1
0
        public string runPhase3(IAnalysisArtifacts analysisArtifacts)
        {
            O2Cmd.log.write("\n\n*****  PHASE 3 ***");

            // setup expected target folders
            workflowFolder = analysisArtifacts.targetFolder;

            folderWithArtifacts_Phase2 = Path.Combine(workflowFolder, "Phase 2 - Artifacts");
            folderWithArtifacts_Phase3 = Path.Combine(workflowFolder, "Phase 3 - Artifacts");
            Files.checkIfDirectoryExistsAndCreateIfNot(folderWithArtifacts_Phase3);     // create Phase 2 folder (if required)

            // check if  required folders exist
            Assert.That(Directory.Exists(folderWithArtifacts_Phase2), "folderWithArtifacts_forPhase2 could not be found");
            Assert.That(Directory.Exists(folderWithArtifacts_Phase3), "folderWithArtifacts_forPhase3 could not be found");

            if (analysisArtifacts.phase_3.task1_handleKnownSinks)
            {
                task1_handleKnownSinks();
            }

            if (analysisArtifacts.phase_3.task2_filterFindings)
            {
                var targetFolder = Path.Combine(folderWithArtifacts_Phase3, "Filtered_Findings");
                Files.checkIfDirectoryExistsAndCreateIfNot(targetFolder);
                Files.deleteAllFilesFromDir(targetFolder);

                var allTraces_KnownSinks = XUtils_Analysis.getAllTraces_KnownSinks(folderWithArtifacts_Phase2);
                var allTraces_LostSinks  = XUtils_Analysis.getAllTraces_LostSinks(folderWithArtifacts_Phase2);

                task2_filterFindings((KAnalysisArtifacts)analysisArtifacts, allTraces_KnownSinks, targetFolder, "Known Sinks");
                task2_filterFindings((KAnalysisArtifacts)analysisArtifacts, allTraces_LostSinks, targetFolder, "Lost Sinks");
            }

            if (analysisArtifacts.phase_3.task3_filter_FindingsWithNoTraces)
            {
                var allTraces_NoTraces = XUtils_Analysis.getAllTraces_NoTraces(folderWithArtifacts_Phase2);
                task3_filter_FindingsWithNoTraces(allTraces_NoTraces);
            }

            if (analysisArtifacts.phase_3.task4_CalculateStrutsFindings)
            {
                task4_CalculateStrutsFindings();
            }

            O2Cmd.log.write("\n\n*****  PHASE 3 COMPLETED ***");
            return("Phase 3 completed");
        }