public static O2TraceBlock_OunceV6 getTraceBlockToGlueFinding(AssessmentAssessmentFileFinding fFinding, TraceType ttTraceType, O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6, Dictionary <String, O2TraceBlock_OunceV6> dO2TraceBlock) { CallInvocation ciCallInvocation = AnalysisSearch.findTraceTypeInSmartTrace_Recursive_returnCallInvocation(fFinding.Trace, ttTraceType); if (ciCallInvocation == null) { return(null); } String sSourceSignature = OzasmtUtils_OunceV6.getStringIndexValue(ciCallInvocation.sig_id, oadO2AssessmentDataOunceV6); String sFile = OzasmtUtils_OunceV6.getFileIndexValue(ciCallInvocation.fn_id, oadO2AssessmentDataOunceV6); String sLineNumber = ciCallInvocation.line_number.ToString(); String sTraceRootText = OzasmtUtils_OunceV6.getStringIndexValue(fFinding.Trace[0].sig_id, oadO2AssessmentDataOunceV6); String sUniqueName = String.Format("{0} {1} {2}", sSourceSignature, sFile, sLineNumber); // need to find a better way to clue the final sinks since at the moment I am getting a couple sinks trown by the cases when a sink also become a source of tainted data //String sUniqueName = String.Format("{0} {1} {2} {3}", sSourceSignature, sFile, sLineNumber, sTraceRootText); if (false == dO2TraceBlock.ContainsKey(sUniqueName)) { dO2TraceBlock.Add(sUniqueName, new O2TraceBlock_OunceV6()); dO2TraceBlock[sUniqueName].sSignature = sSourceSignature; dO2TraceBlock[sUniqueName].sFile = sFile; dO2TraceBlock[sUniqueName].sLineNumber = sLineNumber; dO2TraceBlock[sUniqueName].sTraceRootText = sTraceRootText; dO2TraceBlock[sUniqueName].sUniqueName = sUniqueName; } return(dO2TraceBlock[sUniqueName]); }
public void addTreeNodeToComboxWithNodesToPlot(TreeNode tnTreeNodeToAdd, AssessmentAssessmentFileFinding fFinding, O2AssessmentData_OunceV6 fadAssessmentDataOunceV6) { try { if (false == cbGLEE_MultiNodes.Checked) { tvGLEE_NodesToGraph.Nodes.Clear(); } foreach (TreeNode tnTreeNode in tvGLEE_NodesToGraph.Nodes) { if (tnTreeNode.Tag == tnTreeNodeToAdd.Tag) { DI.log.debug("Trace was already in list of nodes to graph"); return; } } //lfFindingsToGraph.Add(fFinding); tvGLEE_NodesToGraph.Nodes.Add((TreeNode)tnTreeNodeToAdd.Clone()); // loadSmartTraceGraphInGleeViewer(fadO2AssessmentData); } catch (Exception ex) { DI.log.ex(ex, "in addTreeNodeToComboxWithNodesToPlot"); } }
public static List <String> getListOf_TraceSignatures_ByTraceType(String sPathToSavedXmlFile, TraceType ttTraceType, ref O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6) { var lsMatches = new List <string>(); bool bVerbose = false; if (fadO2AssessmentDataOunceV6 == null) { Analysis.loadAssessmentFile(sPathToSavedXmlFile, bVerbose, ref fadO2AssessmentDataOunceV6); } if (null != fadO2AssessmentDataOunceV6.arAssessmentRun.Assessment.Assessment) { foreach (Assessment aAssessment in fadO2AssessmentDataOunceV6.arAssessmentRun.Assessment.Assessment) { foreach (AssessmentAssessmentFile afAssessmentFile in aAssessment.AssessmentFile) { if (null != afAssessmentFile.Finding) { foreach (AssessmentAssessmentFileFinding aaffFinding in afAssessmentFile.Finding) { String sSignature = Analysis.getSmartTraceNameOfTraceType(aaffFinding.Trace, ttTraceType, fadO2AssessmentDataOunceV6); if (sSignature != "" && false == lsMatches.Contains(sSignature)) { lsMatches.Add(sSignature); } } } } } } return(lsMatches); }
public static bool areAllSourceCodeReferencesInAssessmentFileValid(O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6) { PublicDI.log.debug("Checking to see if all source code references are valid"); if (oadO2AssessmentDataOunceV6.arAssessmentRun == null) { PublicDI.log.error( "in areAllSourceCodeReferencesInAssessmentFileValid: oadO2AssessmentDataOunceV6.arAssessmentRun == null (aborting)"); return(true); } try { foreach (string sFile in getListOfUniqueFiles(oadO2AssessmentDataOunceV6)) { if (false == File.Exists(sFile)) { return(false); } } return(true); } catch (Exception ex) { PublicDI.log.error("in areAllSourceCodeReferencesInAssessmentFileValid: {0}", ex.Message); return(false); } }
private static string fromAssessmentRunFileCreateNewFileWithUniqueTraces(string sPathToNewAssessmentFile, bool bDropDuplicateSmartTraces, bool bIgnoreRootCallInvocation) { string sTargetFilename; DI.log.debug("Create file with unique traces"); // O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6NewFile = null; Analysis.loadAssessmentFile(sPathToNewAssessmentFile, false, ref oadO2AssessmentDataOunceV6NewFile); Analysis.FindingNameFormat ffnFindingNameFormat = Analysis.FindingNameFormat.FindingType; bool bChangeFindingData = false; var ffsmFilter = new AnalysisFilters.filter_FindSmartTraces(bDropDuplicateSmartTraces, bIgnoreRootCallInvocation, ffnFindingNameFormat, bChangeFindingData); AssessmentRun arFilteredAssessmentRun = Analysis.createFilteredAssessmentRunObjectBasedOnCriteria(ffsmFilter, oadO2AssessmentDataOunceV6NewFile); DI.log.debug("Completed process of filtering to remove duplicate findings"); sTargetFilename = sPathToNewAssessmentFile + "_UniqueTraces.ozasmt"; Analysis.saveFilteredAssessmentRun(arFilteredAssessmentRun, sTargetFilename, oadO2AssessmentDataOunceV6NewFile); return(sTargetFilename); }
public static List <String> getListOf_KnownSinks(String sPathToSavedXmlFile, ref O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6) { TraceType ttTraceType = TraceType.Known_Sink; return(getListOf_TraceSignatures_ByTraceType(sPathToSavedXmlFile, ttTraceType, ref fadO2AssessmentDataOunceV6)); }
public static void addFindingAsGlueTrace(O2TraceBlock_OunceV6 otbO2TraceBlockOunceV6WithTracesToGlue, AssessmentAssessmentFileFinding fFinding, O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6, TreeView tvRawData, bool bAddGluedTracesAsRealTraces) { String sUniqueSignature = analyzer.getUniqueSignature(fFinding, TraceType.Known_Sink, oadO2AssessmentDataOunceV6, true); var otbO2TraceBlockWithTracesToReceiveTraces = (O2TraceBlock_OunceV6)tvRawData.Nodes[sUniqueSignature].Tag; foreach (AssessmentAssessmentFileFinding fFindingToGlue in otbO2TraceBlockOunceV6WithTracesToGlue.dSinks.Keys) { if (false == otbO2TraceBlockWithTracesToReceiveTraces.dGluedSinks.ContainsKey(fFindingToGlue)) { otbO2TraceBlockWithTracesToReceiveTraces.dGluedSinks.Add(fFindingToGlue, otbO2TraceBlockOunceV6WithTracesToGlue.dSinks[ fFindingToGlue]); } if (bAddGluedTracesAsRealTraces) // so that the traces show in the Raw View list { if (false == otbO2TraceBlockWithTracesToReceiveTraces.dSinks.ContainsKey(fFindingToGlue)) { otbO2TraceBlockWithTracesToReceiveTraces.dSinks.Add(fFindingToGlue, otbO2TraceBlockOunceV6WithTracesToGlue.dSinks[ fFindingToGlue]); } } } }
public static List <String> getListOf_Sinks(String sPathToSavedXmlFile, ref O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6) { // Analysis.TraceType ttTraceType = Analysis.TraceType.Known_Sink; List <String> lsSinks = getListOf_KnownSinks(sPathToSavedXmlFile, ref fadO2AssessmentDataOunceV6); lsSinks.AddRange(getListOf_LostSinks(sPathToSavedXmlFile, ref fadO2AssessmentDataOunceV6)); return(lsSinks); }
public static void fixAllFileReferencesOnAssessmentDataObject(O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6, String sFix_PathToFind, String sFix_PathToReplace) { var rfmresolvedFileMapping = new SourceCodeMappingsUtils.resolvedFileMapping("") { sFix_PathToFind = sFix_PathToFind, sFix_PathToReplace = sFix_PathToReplace }; fixAllFileReferencesOnAssessmentDataObject(oadO2AssessmentDataOunceV6, rfmresolvedFileMapping); }
public static void tryToFixSourceCodeReferences(O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6) { PublicDI.log.debug("Trying To Fix Source Code References"); SourceCodeMappings scmSourceCodeMappings = SourceCodeMappingsUtils.getSourceCodeMappings(); foreach (SourceCodeMappingsMapping mMapping in scmSourceCodeMappings.Mapping) { fixAllFileReferencesOnAssessmentDataObject(oadO2AssessmentDataOunceV6, mMapping.replaceThisString, mMapping.withThisString); } }
public static void MakeAllLostSinksIntoKnownSinks(O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6) { foreach (AssessmentAssessmentFileFinding fFinding in oadO2AssessmentDataOunceV6.dFindings.Keys) { CallInvocation ciLostSink = AnalysisSearch.findTraceTypeInSmartTrace_Recursive_returnCallInvocation(fFinding.Trace, TraceType.Lost_Sink); if (ciLostSink != null) { ciLostSink.trace_type = (UInt32)TraceType.Known_Sink; } } }
public static void createSavedAssessmentFileWith_LostSinks_Unique(String sPathToFindingsXmlFile_Source, String sPathToFindingsXmlFile_Target) { O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6 = null; bool bChangeFindingData = true; bool bVerbose = false; Analysis.loadAssessmentFile(sPathToFindingsXmlFile_Source, bVerbose, ref fadO2AssessmentDataOunceV6); Analysis.FindingNameFormat ffnFindingNameFormat = Analysis.FindingNameFormat.Sink; Analysis.createAssessmentFileWithLostSinks_OneExampleEach(sPathToFindingsXmlFile_Target, ffnFindingNameFormat, bChangeFindingData, fadO2AssessmentDataOunceV6); }
public static String getSource(AssessmentAssessmentFileFinding fFinding, O2AssessmentData_OunceV6 oadF1AssessmentDataOunceV6) { CallInvocation ciCallInvocation = AnalysisSearch.findTraceTypeInSmartTrace_Recursive_returnCallInvocation(fFinding.Trace, TraceType.Source); if (ciCallInvocation != null) { return(OzasmtUtils_OunceV6.getStringIndexValue(ciCallInvocation.sig_id, oadF1AssessmentDataOunceV6)); } return(""); }
public void loadAssessmentRunFileAndAddItToList(String sPathToFile, bool bCheckSourceCodeReferences) { if (Path.GetExtension(sPathToFile) == ".zip") { string tempFolder = DI.config.TempFolderInTempDirectory; new zipUtils().unzipFile(sPathToFile, tempFolder); foreach (string unzipedFile in Files.getFilesFromDir_returnFullPath(tempFolder)) { loadAssessmentRunFileAndAddItToList(unzipedFile, bCheckSourceCodeReferences); } } else { O2AssessmentData_OunceV6 oadO2AssessmentData = null; O2Timer tTimer = new O2Timer("Loaded SavedAssessmentFile").start(); Analysis.loadAssessmentFile(sPathToFile, false, ref oadO2AssessmentData); if (oadO2AssessmentData.arAssessmentRun == null) { DI.log.error( "Serialized Saved Assessment run was null (are you sure this is an SavedAssessment file? :{0}", sPathToFile); return; } // Calculate Xrefs into fadAssessmentData Analysis.populateDictionariesWithXrefsToLoadedAssessment(ffFindingFilter, bDropDuplicateSmartTraces, bIgnoreRootCallInvocation, oadO2AssessmentData); if (oadO2AssessmentData != null) { foreach (object oItem in lbLoadedAssessmentFiles.Items) { if (oItem.ToString() == oadO2AssessmentData.ToString()) { DI.log.error( "in loadAssessmentRunFileAndAddItToList, file is already in the list of O2AssessmentRun objects"); tTimer.stop(); return; } } lbLoadedAssessmentFiles.Items.Add(oadO2AssessmentData); //O2Forms.executeMethodThreadSafe(lbLoadedAssessmentFiles,lbLoadedAssessmentFiles.Items, "Add", new object[] { oadO2AssessmentData }); //lbTargetSavedAssessmentFiles.Items.Add(oadO2AssessmentData); } if (bCheckSourceCodeReferences) { checkIfSourceCodeReferencesAreValid(); } tTimer.stop(); ascx_svpSearchAssessmentRun.setCheckBox_Checked(2, true); } }
public static AssessmentAssessmentFileFinding createNewFindingFromExistingOne( AssessmentAssessmentFileFinding fOriginalFinding, Dictionary <String, UInt32> dNewStringIndex, Dictionary <String, UInt32> dNewFileIndex, O2AssessmentData_OunceV6 fadOriginalO2AssessmentDataOunceV6) { if (fOriginalFinding != null && fOriginalFinding.Trace != null) { var fFinding = new AssessmentAssessmentFileFinding(); fFinding.actionobject_id = fOriginalFinding.actionobject_id; fFinding.caller_name = fOriginalFinding.caller_name; //fFinding.caller_name_id = fOriginalFinding.caller_name_id; fFinding.caller_name_id = (fOriginalFinding.caller_name_id == null) ? null : updateNewAssessmentRunWithStringID( UInt32.Parse(fOriginalFinding.caller_name_id), dNewStringIndex, fadOriginalO2AssessmentDataOunceV6).ToString(); fFinding.confidence = fOriginalFinding.confidence; fFinding.context = fOriginalFinding.context; fFinding.exclude = fOriginalFinding.exclude; fFinding.line_number = fOriginalFinding.line_number; fFinding.ordinal = fOriginalFinding.ordinal; fFinding.project_name = fOriginalFinding.project_name; fFinding.property_ids = fOriginalFinding.property_ids; fFinding.record_id = fOriginalFinding.record_id; fFinding.severity = fOriginalFinding.severity; fFinding.Text = fOriginalFinding.Text; fFinding.vuln_name = fOriginalFinding.vuln_name; fFinding.vuln_name_id = (fOriginalFinding.vuln_name_id == null) ? null : updateNewAssessmentRunWithStringID( UInt32.Parse(fOriginalFinding.vuln_name_id), dNewStringIndex, fadOriginalO2AssessmentDataOunceV6).ToString(); fFinding.vuln_type = fOriginalFinding.vuln_type; fFinding.vuln_type_id = (fOriginalFinding.vuln_type_id == null) ? null : updateNewAssessmentRunWithStringID( UInt32.Parse(fOriginalFinding.vuln_type_id), dNewStringIndex, fadOriginalO2AssessmentDataOunceV6).ToString(); //fFinding.vuln_name = (fOriginalFinding.vuln_name != null) ? fOriginalFinding.vuln_name : Analysis.getStringIndexValue(UInt32.Parse(fOriginalFinding.vuln_name_id), fadOriginalO2AssessmentDataOunceV6); //fFinding.vuln_type = (fOriginalFinding.vuln_type != null) ? fOriginalFinding.vuln_type : Analysis.getStringIndexValue(UInt32.Parse(fOriginalFinding.vuln_type_id), fadOriginalO2AssessmentDataOunceV6); var lciNewCallInvocation = new List <CallInvocation>(); // fOriginalFinding.Trace = updateAssessmentRunWithTraceReferences_recursive(lciNewCallInvocation, fOriginalFinding.Trace, dNewStringIndex, dNewFileIndex, fadOriginalO2AssessmentDataOunceV6); fFinding.Trace = updateAssessmentRunWithTraceReferences_recursive(lciNewCallInvocation, fOriginalFinding.Trace, dNewStringIndex, dNewFileIndex, fadOriginalO2AssessmentDataOunceV6); return(fFinding); } return(fOriginalFinding); }
// we need to create new CallInvocation Objects because we need to change them public static CallInvocation[] updateAssessmentRunWithTraceReferences_recursive( List <CallInvocation> lciNewCallInvocation, CallInvocation[] aciOriginalCallInvocation, Dictionary <String, UInt32> dNewStringIndex, Dictionary <String, UInt32> dNewFileIndex, O2AssessmentData_OunceV6 fadOriginalO2AssessmentDataOunceV6) { if (aciOriginalCallInvocation == null) { return(null); } else { foreach (CallInvocation ciOriginalCallInvocation in aciOriginalCallInvocation) { var ciNewCallInvocation = new CallInvocation(); ciNewCallInvocation.cn_id = updateNewAssessmentRunWithStringID(ciOriginalCallInvocation.cn_id, dNewStringIndex, fadOriginalO2AssessmentDataOunceV6); ciNewCallInvocation.column_number = ciOriginalCallInvocation.column_number; ciNewCallInvocation.cxt_id = updateNewAssessmentRunWithStringID(ciOriginalCallInvocation.cxt_id, dNewStringIndex, fadOriginalO2AssessmentDataOunceV6); ciNewCallInvocation.fn_id = updateNewAssessmentRunWithFileID(ciOriginalCallInvocation.fn_id, dNewFileIndex, fadOriginalO2AssessmentDataOunceV6); ciNewCallInvocation.line_number = ciOriginalCallInvocation.line_number; ciNewCallInvocation.mn_id = updateNewAssessmentRunWithStringID(ciOriginalCallInvocation.mn_id, dNewStringIndex, fadOriginalO2AssessmentDataOunceV6); ciNewCallInvocation.ordinal = ciOriginalCallInvocation.ordinal; ciNewCallInvocation.sig_id = updateNewAssessmentRunWithStringID(ciOriginalCallInvocation.sig_id, dNewStringIndex, fadOriginalO2AssessmentDataOunceV6); ciNewCallInvocation.taint_propagation = ciOriginalCallInvocation.taint_propagation; ciNewCallInvocation.Text = ciOriginalCallInvocation.Text; ciNewCallInvocation.trace_type = ciOriginalCallInvocation.trace_type; var lciNewCallInvocation_Child = new List <CallInvocation>(); ciNewCallInvocation.CallInvocation1 = updateAssessmentRunWithTraceReferences_recursive(lciNewCallInvocation_Child, ciOriginalCallInvocation.CallInvocation1, dNewStringIndex, dNewFileIndex, fadOriginalO2AssessmentDataOunceV6); lciNewCallInvocation.Add(ciNewCallInvocation); } return(lciNewCallInvocation.ToArray()); } }
public static void getListWithMethodsCalled_Recursive(CallInvocation[] cCallInvocations, List <CallInvocation> lciMethodsCalled, O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6, Analysis.SmartTraceFilter stfSmartTraceFilter) { if (cCallInvocations != null) { foreach (CallInvocation cCall in cCallInvocations) { lciMethodsCalled.Add(cCall); //lsMethodsCalled.Add(getTextFromFindingBySmartTraceFilter(cCall,fadO2AssessmentDataOunceV6,stfSmartTraceFilter)); getListWithMethodsCalled_Recursive(cCall.CallInvocation1, lciMethodsCalled, fadO2AssessmentDataOunceV6, stfSmartTraceFilter); } } }
public static O2AssessmentData_OunceV6 loadAssessmentRunFileAndAddItToList(String sPathToFile) { var bDropDuplicateSmartTraces = true; var bIgnoreRootCallInvocation = true; var ffFindingFilter = Analysis.FindingFilter.AllFindings; O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6 = null; O2Timer tTimer = new O2Timer("Loaded SavedAssessmentFile").start(); Analysis.loadAssessmentFile(sPathToFile, false, ref oadO2AssessmentDataOunceV6); // Calculate Xrefs into fadAssessmentData Analysis.populateDictionariesWithXrefsToLoadedAssessment(ffFindingFilter, bDropDuplicateSmartTraces, bIgnoreRootCallInvocation, oadO2AssessmentDataOunceV6); tTimer.stop(); return(oadO2AssessmentDataOunceV6); }
public static void showCallInvocationDetailsInDataGridView(DataGridView dgvDataGridView, CallInvocation ciCallInvocation, O2AssessmentData_OunceV6 oadAssessmentDataOunceV6) { if (ciCallInvocation != null) { try { dgvDataGridView.Columns.Clear(); O2Forms.addToDataGridView_Column(dgvDataGridView, "Name", 90); O2Forms.addToDataGridView_Column(dgvDataGridView, "Value", -1); dgvDataGridView.Rows.Add("sig_id", OzasmtUtils_OunceV6.getStringIndexValue(ciCallInvocation.sig_id, oadAssessmentDataOunceV6)); dgvDataGridView.Rows.Add("cxt_id", OzasmtUtils_OunceV6.getStringIndexValue(ciCallInvocation.cxt_id, oadAssessmentDataOunceV6)); dgvDataGridView.Rows.Add("fn_id", OzasmtUtils_OunceV6.getFileIndexValue(ciCallInvocation.fn_id, oadAssessmentDataOunceV6)); dgvDataGridView.Rows.Add("cn id", OzasmtUtils_OunceV6.getStringIndexValue(ciCallInvocation.cn_id, oadAssessmentDataOunceV6)); dgvDataGridView.Rows.Add("trace_type", ciCallInvocation.trace_type.ToString()); dgvDataGridView.Rows.Add("column_number", ciCallInvocation.column_number.ToString()); dgvDataGridView.Rows.Add("line_number", ciCallInvocation.line_number.ToString()); dgvDataGridView.Rows.Add("mn_id", OzasmtUtils_OunceV6.getStringIndexValue(ciCallInvocation.mn_id, oadAssessmentDataOunceV6)); dgvDataGridView.Rows.Add("ordinal", ciCallInvocation.ordinal.ToString()); dgvDataGridView.Rows.Add("taint_propagation", ciCallInvocation.taint_propagation); if (ciCallInvocation.Text != null) { var sbText = new StringBuilder(); foreach (String sLine in ciCallInvocation.Text) { sbText.AppendLine(sLine); } dgvDataGridView.Rows.Add("Text", sbText.ToString()); } //ciCallInvocation.Text; } catch (Exception ex) { DI.log.error("in showCallInvocationDetailsInDataGridView :{0}", ex.Message); } } }
public static String getTextFromFindingBySmartTraceFilter(CallInvocation cCall, O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6, Analysis.SmartTraceFilter stfSmartTraceFilter) { String sText = ""; //case Analysis.SmartTraceFilter.MethodName: // Use this as the default (since it will cover for the cases where the context or source are empty if (cCall.sig_id == 0 && cCall.fn_id > 0) { sText = fadO2AssessmentDataOunceV6.arAssessmentRun.StringIndeces[cCall.fn_id - 1].value; } else if (cCall.sig_id == 0) { sText = "..."; } else { sText = fadO2AssessmentDataOunceV6.arAssessmentRun.StringIndeces[cCall.sig_id - 1].value; } switch (stfSmartTraceFilter) { case Analysis.SmartTraceFilter.Context: if (0 != cCall.cxt_id) { sText = fadO2AssessmentDataOunceV6.arAssessmentRun.StringIndeces[cCall.cxt_id - 1].value; } break; case Analysis.SmartTraceFilter.SourceCode: List <String> lsSourceCode = Files.loadSourceFileIntoList( fadO2AssessmentDataOunceV6.arAssessmentRun.FileIndeces[cCall.fn_id - 1].value); String sSounceCodeLine = Files.getLineFromSourceCode(cCall.line_number, lsSourceCode); if ("" != sSounceCodeLine) { sText = sSounceCodeLine; sText = sText.Replace("\t", ""); } break; } return(sText); }
public static UInt32 updateNewAssessmentRunWithStringID(UInt32 uIdToUpdate, Dictionary <String, UInt32> dNewStringIndex, O2AssessmentData_OunceV6 fadOriginalO2AssessmentDataOunceV6) { if (uIdToUpdate == 0) { return(0); } String sTextToUpdate = OzasmtUtils_OunceV6.getStringIndexValue(uIdToUpdate, fadOriginalO2AssessmentDataOunceV6); if (dNewStringIndex.ContainsKey(sTextToUpdate)) { return(dNewStringIndex[sTextToUpdate]); } UInt32 uNewId = (UInt32)dNewStringIndex.Count + 1; dNewStringIndex.Add(sTextToUpdate, uNewId); return(uNewId); }
public static List <String> getListOf_LostSinks_Unique(String sPathToSavedXmlFile, ref O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6) { var lMatches = new List <string>(); bool bChangeFindingData = false; Analysis.FindingNameFormat ffnFindingNameFormat = Analysis.FindingNameFormat.FindingType; var ffulsFilter = new AnalysisFilters.filter_FindUniqueLostSinks(ffnFindingNameFormat, bChangeFindingData); List <AssessmentAssessmentFileFinding> laaffFindings = getListOfFindingsUsingFilter(sPathToSavedXmlFile, ffulsFilter, ref fadO2AssessmentDataOunceV6); foreach (AssessmentAssessmentFileFinding aaffFinding in laaffFindings) { lMatches.Add(Analysis.getSmartTraceNameOfTraceType(aaffFinding.Trace, TraceType.Lost_Sink, fadO2AssessmentDataOunceV6)); } return(lMatches); }
public AssessmentAssessmentFileFinding AddNewFindingFromExistingOne( AssessmentAssessmentFileFinding fFinding, O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6) { AssessmentAssessmentFileFinding fNewFinding = createNewFindingFromExistingOne(fFinding, dNewStringIndex, dNewFileIndex, oadO2AssessmentDataOunceV6); lfNewFindinds.Add(fNewFinding); //AssessmentAssessmentFile fNewFile = AnalysisSearch.createNewAssessmentFileFromExistingOne(fviJoinAtSink.oadO2AssessmentDataOunceV6.dFindings[fviJoinAtSink.fFinding]); AssessmentAssessmentFile fNewFile = createNewAssessmentFileFromExistingOne(oadO2AssessmentDataOunceV6.dFindings[fFinding]); fNewFile.Finding = new[] { fNewFinding }; oadNewO2AssessmentDataOunceV6.dFindings = new Dictionary <AssessmentAssessmentFileFinding, AssessmentAssessmentFile>(); oadNewO2AssessmentDataOunceV6.dFindings.Add(fNewFinding, fNewFile); fLastFindingAdded = fNewFinding; return(fNewFinding); }
private void tvSmartTrace_AfterSelect(object sender, TreeViewEventArgs e) { var fviFindingViewItem = (FindingViewItem)tvSmartTrace.Tag; O2AssessmentData_OunceV6 fadAssessmentDataOunceV6 = fviFindingViewItem.oadO2AssessmentDataOunceV6; switch (e.Node.Tag.GetType().Name) { case "CallInvocation": var cCall = (CallInvocation)e.Node.Tag; if (fadAssessmentDataOunceV6.arAssessmentRun.FileIndeces.Length < cCall.fn_id) { break; } String sSourceCodeFile = OzasmtUtils_OunceV6.getFileIndexValue(cCall.fn_id, fviFindingViewItem.oadO2AssessmentDataOunceV6); // // fadAssessmentDataOunceV6.arAssessmentRun.FileIndeces[cCall.fn_id - 1].value; ascx_SourceCodeEditor1.gotoLine(sSourceCodeFile, (int)cCall.line_number); ascx_Glee1.showCallInGlee(e.Node.Text); FindingsView.showCallInvocationDetailsInDataGridView(dgvCallInvocationDetails, cCall, fviFindingViewItem.oadO2AssessmentDataOunceV6); //String sSignature = o2.analysis.Analysis.getStringIndexValue(cCall.sig_id, fadAssessmentDataOunceV6); // ascx_RulesCreator1.addMethodToTargetsList(fadAssessmentDataOunceV6.sDb_id, sSignature, true); // o2.ounce.datalayer.mysql.MySqlEvents.raiseEvent_ShowCustomRulesDetails_MethodSignature(fadAssessmentDataOunceV6.sDb_id, sSignature); break; //case "AssessmentAssessmentFileFinding": // break; default: DI.log.error("in tvSmartTrace_AfterSelect: not supported type: {0}", e.Node.Tag.GetType().Name); break; } tvSmartTrace.Focus(); }
public static String getUniqueSignature(AssessmentAssessmentFileFinding fFinding, TraceType ttTraceType, O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6, bool bShowFullPathForFileName) { CallInvocation ciCallInvocation = AnalysisSearch.findTraceTypeInSmartTrace_Recursive_returnCallInvocation(fFinding.Trace, ttTraceType); if (ciCallInvocation == null) { return(null); } String sSourceSignature = OzasmtUtils_OunceV6.getStringIndexValue(ciCallInvocation.sig_id, oadO2AssessmentDataOunceV6); String sFile = OzasmtUtils_OunceV6.getFileIndexValue(ciCallInvocation.fn_id, oadO2AssessmentDataOunceV6); String sLineNumber = ciCallInvocation.line_number.ToString(); if (bShowFullPathForFileName) { return(String.Format("{0} {1} {2}", sSourceSignature, sFile, sLineNumber)); } else { return(String.Format("{0} {1} {2}", sSourceSignature, Path.GetFileName(sFile), sLineNumber)); } }
public static List <String> getListOfUniqueFiles(O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6) { var lsUniqueFiles = new List <string>(); // search in FileIndexes foreach (AssessmentRunFileIndex fiFileIndex in oadO2AssessmentDataOunceV6.arAssessmentRun.FileIndeces) { if (false == lsUniqueFiles.Contains(fiFileIndex.value)) { lsUniqueFiles.Add(fiFileIndex.value); } } foreach (AssessmentAssessmentFile fFile in oadO2AssessmentDataOunceV6.dAssessmentFiles.Keys) { if (false == lsUniqueFiles.Contains(fFile.filename)) { lsUniqueFiles.Add(fFile.filename); } } // search in FileFindings // {to do} return(lsUniqueFiles); }
public static void fixAllFileReferencesOnAssessmentDataObject(O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6, SourceCodeMappingsUtils.resolvedFileMapping rfmResolvedFileMapping) { if (oadO2AssessmentDataOunceV6 != null && rfmResolvedFileMapping != null) { foreach (AssessmentRunFileIndex fiFileIndex in oadO2AssessmentDataOunceV6.arAssessmentRun.FileIndeces) { fiFileIndex.value = fiFileIndex.value.Replace(rfmResolvedFileMapping.sFix_PathToFind, rfmResolvedFileMapping.sFix_PathToReplace); } foreach (AssessmentAssessmentFile fFile in oadO2AssessmentDataOunceV6.dAssessmentFiles.Keys) { if (rfmResolvedFileMapping.sFix_PathToFind != "") { fFile.filename = fFile.filename.Replace(rfmResolvedFileMapping.sFix_PathToFind, rfmResolvedFileMapping.sFix_PathToReplace); } else { fFile.filename = Path.Combine(rfmResolvedFileMapping.sFix_PathToReplace, fFile.filename); } } } }
public void loadSmartTraceGraphInGleeViewer(O2AssessmentData_OunceV6 fadAssessmentDataOunceV6) { setAssessmentData(fadAssessmentDataOunceV6); loadSmartTraceGraphInGleeViewer(rbGraphAllNodes.Checked); }
public void setAssessmentData(O2AssessmentData_OunceV6 fadAssessmentDataOunceV6) { this.fadAssessmentDataOunceV6 = fadAssessmentDataOunceV6; }
public static List <String> getListOf_LostSinks_Unique(String sPathToSavedXmlFile) { O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6 = null; return(getListOf_LostSinks_Unique(sPathToSavedXmlFile, ref fadO2AssessmentDataOunceV6)); }