public static void calculateSmartTraceCallStatistics(AssessmentRun arAssessmentRunToAnalyze, UInt32 uKey, TraceType tTraceType, ref int iSmartTraces, ref int iNonDuplicated, ref int iIgnoreRoot) { if (arAssessmentRunToAnalyze == null) return; FindingNameFormat ffnFindingNameFormat = FindingNameFormat.FindingType; // using default value (we are not going to need this value here (since we are only calculating statistics)) bool bChangeFindingData = false; // this is the value that prevents changes bool bDropDuplicateSmartTraces = false; bool bIgnoreRootCallInvocation = false; var ffsmSmartTraces = new AnalysisFilters.filter_FindSmartTrace_byID(uKey, tTraceType, bDropDuplicateSmartTraces, bIgnoreRootCallInvocation, ffnFindingNameFormat, bChangeFindingData); bDropDuplicateSmartTraces = true; var ffsmSmartTraces_NotDuplicated = new AnalysisFilters.filter_FindSmartTrace_byID(uKey, tTraceType, bDropDuplicateSmartTraces, bIgnoreRootCallInvocation, ffnFindingNameFormat, bChangeFindingData); bIgnoreRootCallInvocation = true; var ffsmSmartTraces_NotDuplicated_IgnoreRoot = new AnalysisFilters.filter_FindSmartTrace_byID(uKey, tTraceType, bDropDuplicateSmartTraces, bIgnoreRootCallInvocation, ffnFindingNameFormat, bChangeFindingData); // create lists to hold results var lfFindingsThatMatchCriteria_SmartTraces = new List<AssessmentAssessmentFileFinding>(); var lfFindingsThatMatchCriteria_SmartTraces_NotDuplicated = new List<AssessmentAssessmentFileFinding>(); var lfFindingsThatMatchCriteria_SmartTraces_NotDuplicated_IgnoreRoot = new List<AssessmentAssessmentFileFinding>(); if (StringsAndLists.notNull(arAssessmentRunToAnalyze, typeof (AssessmentRun).Name) && null != arAssessmentRunToAnalyze.Assessment.Assessment) foreach (Assessment aAssessment in arAssessmentRunToAnalyze.Assessment.Assessment) { foreach (AssessmentAssessmentFile afAssessmentFile in aAssessment.AssessmentFile) if (null != afAssessmentFile.Finding) foreach (AssessmentAssessmentFileFinding fFinding in afAssessmentFile.Finding) if (null != fFinding.Trace) { applyFilter(ffsmSmartTraces, lfFindingsThatMatchCriteria_SmartTraces, fFinding, arAssessmentRunToAnalyze); applyFilter(ffsmSmartTraces_NotDuplicated, lfFindingsThatMatchCriteria_SmartTraces_NotDuplicated, fFinding, arAssessmentRunToAnalyze); applyFilter(ffsmSmartTraces_NotDuplicated_IgnoreRoot, lfFindingsThatMatchCriteria_SmartTraces_NotDuplicated_IgnoreRoot, fFinding, arAssessmentRunToAnalyze); } } iSmartTraces = lfFindingsThatMatchCriteria_SmartTraces.Count; iNonDuplicated = lfFindingsThatMatchCriteria_SmartTraces_NotDuplicated.Count; iIgnoreRoot = lfFindingsThatMatchCriteria_SmartTraces_NotDuplicated_IgnoreRoot.Count; }
public static void createXmlFileWithOnlyFindingsFromSmartTraceCall(String sTargetFileName, FindingNameFormat ffnFindingNameFormat, UInt32 uSmartTraceCallID, TraceType tTraceType, bool bFilterDuplicateFindings, bool bIgnoreRootCallInvocation, bool bChangeFindingData, O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6) { var ffstidFilter = new AnalysisFilters.filter_FindSmartTrace_byID(uSmartTraceCallID, tTraceType, bFilterDuplicateFindings, bIgnoreRootCallInvocation, ffnFindingNameFormat, bChangeFindingData); AssessmentRun arFilteredAssessmentRun = createFilteredAssessmentRunObjectBasedOnCriteria(ffstidFilter, fadO2AssessmentDataOunceV6); saveFilteredAssessmentRun(arFilteredAssessmentRun, sTargetFileName, fadO2AssessmentDataOunceV6); restoreChangedData(bChangeFindingData, fadO2AssessmentDataOunceV6); }