示例#1
0
 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);
        }
示例#3
0
        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;*/
        }