private void raiseSetCirDataAnalysisO2Message() { //setO2CirDataAnalysisObject(cirDataAnalysis); CirDataAnalysisUtils.remapIsCalledByXrefs(cirDataAnalysis); // this is called when everything has been added, so it is the best place to remap the ISCalledBy XRefs O2Messages.setCirDataAnalysis(cirDataAnalysis); updateCirDataStats(); }
/// <summary> /// use this to make sure all main dictionaires are syncronized /// </summary> public void remapXRefs() { var tempCirDataAnalysis = new CirDataAnalysis(this); try { foreach (var cirClass in dClasses_bySignature.Values) { foreach (var cirFunction in cirClass.dFunctions.Values) { if (false == dFunctions_bySignature.ContainsKey(cirFunction.FunctionSignature)) { dFunctions_bySignature.Add(cirFunction.FunctionSignature, cirFunction); } } } } catch (Exception ex) { O2.Kernel.PublicDI.log.error("in remapXRefs: {0}", ex.Message); } CirDataAnalysisUtils.remapIsCalledByXrefs(tempCirDataAnalysis); }
public void test_PopulateCirWithTraces() { // get Assessment Data var o2Assessment = new O2Assessment(new O2AssessmentLoad_OunceV6(), findingsFile); Assert.That(o2Assessment.o2Findings.Count > 0, "There were no findings in o2Assessment"); DI.log.info("There are {0} findings in the assessment loaded", o2Assessment.o2Findings.Count); var uniqueListOfSignatures = OzasmtUtils.getUniqueListOfSignatures(o2Assessment.o2Findings); Assert.That(uniqueListOfSignatures.Count() > 0, "uniqueListOfSignatures.Count ==0 "); DI.log.info("There are {0} unique signatures ", uniqueListOfSignatures.Count()); // get cir data var cirDataAnalysis = new CirDataAnalysis(); CirDataAnalysisUtils.loadFileIntoCirDataAnalysisObject(fileToCreateCirFrom, cirDataAnalysis); CirDataAnalysisUtils.remapIsCalledByXrefs(cirDataAnalysis); Assert.That(cirDataAnalysis.dCirFunction_bySignature.Count > 0, "cirDataAnalysis.dCirFunction_bySignature.Count == 0"); // need to convert to Ozasmt signature format var cirMappedFunctions = new Dictionary <string, ICirFunction>(); foreach (var cirFunction in cirDataAnalysis.dCirFunction_bySignature.Values) { if (cirFunction.FunctionSignature.IndexOf("O2AppDomainFactory>") > -1) { } var filteredSignature = new FilteredSignature(cirFunction); cirMappedFunctions.Add(filteredSignature.sSignature, cirFunction); } var matches = new List <String>(); foreach (var sig in cirMappedFunctions.Keys) { if (sig.IndexOf("IndexOf") > -1) { matches.Add(sig); } } //var matches = new List<String>(); /* foreach (var cirFunction in cirMappedFunctions.Values) * foreach (var called in cirFunction.FunctionsCalledUniqueList) * if (called.FunctionSignature.IndexOf("System.Object::.ctor") > -1) * { * matches.Add(called.FunctionSignature); * var asd = cirDataAnalysis.dCirFunction_bySignature.ContainsKey(called.FunctionSignature); * }*/ foreach (var signature in uniqueListOfSignatures) { if (false == cirMappedFunctions.ContainsKey(signature)) { DI.log.info("NO MATCH:" + signature); } } foreach (O2Finding o2Finding in o2Assessment.o2Findings) { var source = o2Finding.Sink; if (source != "" && false == cirMappedFunctions.ContainsKey(source)) { DI.log.info("NO MATCH for Source:" + source); } var sink = o2Finding.Sink; if (sink != "" && false == cirMappedFunctions.ContainsKey(sink)) { DI.log.info("NO MATCH for Sink:" + sink); } } /*foreach (var signature in uniqueListOfSignatures) * DI.log.info(signature); * return;*/ }