示例#1
0
 public static void executeSearch(ICirDataSearchResult cirDataSearchResult, List <String> lsTargetCirClasses)
 {
     if (cirDataSearchResult.fcdAnalysis == null)
     {
         DI.log.error("in CirDataSearchResult.executeSearch , fcdAnalysis == null");
     }
     else
     {
         cirDataSearchResult.clearResultVars();
         foreach (String sClass in lsTargetCirClasses)
         {
             if (cirDataSearchResult.fcdAnalysis.dCirClass_bySignature.ContainsKey(sClass))
             {
                 cirDataSearchResult.lsResult_Classes.Add(sClass);
                 if (cirDataSearchResult.fcdAnalysis.dCirClass_bySignature[sClass].bClassHasMethodsWithControlFlowGraphs &&
                     false == cirDataSearchResult.lsResult_Classes_WithControlFlowGraphs.Contains(sClass))
                 {
                     cirDataSearchResult.lsResult_Classes_WithControlFlowGraphs.Add(sClass);
                 }
                 foreach (
                     CirFunction cfCirFunction in cirDataSearchResult.fcdAnalysis.dCirClass_bySignature[sClass].dFunctions.Values)
                 // if (cfCirFunction.HasControlFlowGraph)
                 {
                     cirDataSearchResult.lsResult_Functions.Add(cfCirFunction.FunctionSignature);
                     if (cfCirFunction.HasControlFlowGraph &&
                         false == cirDataSearchResult.lsResult_Functions_WithControlFlowGraphs.Contains(cfCirFunction.FunctionSignature))
                     {
                         cirDataSearchResult.lsResult_Functions_WithControlFlowGraphs.Add(cfCirFunction.FunctionSignature);
                     }
                     foreach (ICirFunction functionCalled in cfCirFunction.FunctionsCalledUniqueList)
                     {
                         if (false == cirDataSearchResult.lsResult_CallsMade.Contains(functionCalled.FunctionSignature))
                         {
                             // add all functions to this one
                             cirDataSearchResult.lsResult_CallsMade.Add(functionCalled.FunctionSignature);
                         }
                         if (false == cirDataSearchResult.fcdAnalysis.dCirFunction_bySignature.ContainsKey(functionCalled.FunctionSignature))
                         {
                             // only check for functions that we don't have the CIR for
                             if (false == cirDataSearchResult.lsResult_CallsMadeToExternalMethods.Contains(functionCalled.FunctionSignature))
                             {
                                 cirDataSearchResult.lsResult_CallsMadeToExternalMethods.Add(functionCalled.FunctionSignature);
                             }
                         }
                     }
                 }
             }
         }
     }
 }
示例#2
0
 public void LoadClassInfo()
 {
     if (this.okThread(delegate { LoadClassInfo(); }))
     {
         ICirDataSearchResult fcdSearchResult = CirDataAnalysisUtils.executeSearch(cirDataAnalysis);
         if (cbOnlyShowClassesWithFunctionsWithControlFlowGraphs.Checked)
         {
             afv_Classes.showSignatures(fcdSearchResult.lsResult_Classes_WithControlFlowGraphs);
         }
         else
         {
             afv_Classes.showSignatures(fcdSearchResult.lsResult_Classes);
         }
         if (cbCalculateSuperClasses.Checked)
         {
             //afv_Classes.showSignatures(fcdSearchResult.lsResult_Classes);
             afv_SuperClasses.iMaxItemsToShow = 10000;
             afv_SuperClasses.showSignatures(cirDataAnalysis.lCirClass_bySuperClass);
         }
     }
     //  classNodeCheckClickEvent(new List<String>());       // this will clear all previous results;
 }
示例#3
0
 public static void executeSearch(ICirDataSearchResult cirDataSearchResult, List<String> lsTargetCirClasses)
 {            
     if (cirDataSearchResult.fcdAnalysis == null)
         DI.log.error("in CirDataSearchResult.executeSearch , fcdAnalysis == null");
     else
     {
         cirDataSearchResult.clearResultVars();
         foreach (String sClass in lsTargetCirClasses)
         {
             if (cirDataSearchResult.fcdAnalysis.dCirClass_bySignature.ContainsKey(sClass))
             {
                 cirDataSearchResult.lsResult_Classes.Add(sClass);
                 if (cirDataSearchResult.fcdAnalysis.dCirClass_bySignature[sClass].bClassHasMethodsWithControlFlowGraphs &&
                     false == cirDataSearchResult.lsResult_Classes_WithControlFlowGraphs.Contains(sClass))
                     cirDataSearchResult.lsResult_Classes_WithControlFlowGraphs.Add(sClass);
                 foreach (
                     CirFunction cfCirFunction in cirDataSearchResult.fcdAnalysis.dCirClass_bySignature[sClass].dFunctions.Values)
                 // if (cfCirFunction.HasControlFlowGraph)
                 {
                     cirDataSearchResult.lsResult_Functions.Add(cfCirFunction.FunctionSignature);
                     if (cfCirFunction.HasControlFlowGraph &&
                         false == cirDataSearchResult.lsResult_Functions_WithControlFlowGraphs.Contains(cfCirFunction.FunctionSignature))
                         cirDataSearchResult.lsResult_Functions_WithControlFlowGraphs.Add(cfCirFunction.FunctionSignature);
                     foreach (ICirFunction functionCalled in cfCirFunction.FunctionsCalledUniqueList)
                     {
                         if (false == cirDataSearchResult.lsResult_CallsMade.Contains(functionCalled.FunctionSignature))
                             // add all functions to this one
                             cirDataSearchResult.lsResult_CallsMade.Add(functionCalled.FunctionSignature);
                         if (false == cirDataSearchResult.fcdAnalysis.dCirFunction_bySignature.ContainsKey(functionCalled.FunctionSignature))
                             // only check for functions that we don't have the CIR for
                             if (false == cirDataSearchResult.lsResult_CallsMadeToExternalMethods.Contains(functionCalled.FunctionSignature))
                                 cirDataSearchResult.lsResult_CallsMadeToExternalMethods.Add(functionCalled.FunctionSignature);
                     }
                 }
             }
         }            
     }
 }
示例#4
0
 public static void executeSearch(ICirDataSearchResult cirDataSearchResult)
 {
     executeSearch(cirDataSearchResult, new List<String>(cirDataSearchResult.fcdAnalysis.dCirClass_bySignature.Keys));
 }
示例#5
0
 public static void executeSearch(ICirDataSearchResult cirDataSearchResult)
 {
     executeSearch(cirDataSearchResult, new List <String>(cirDataSearchResult.fcdAnalysis.dCirClass_bySignature.Keys));
 }