public void ComputeResults(ICollection m_Files, Hashtable htAppBin, ICollection filters) { // First Pass Visit scan = new Visit(); scan.Collectors.Register("App", new AppCollector()); scan.Collectors.Register("CallGraph", new CallGraphCollector()); scan.DoScan(m_Files, htAppBin, filters); AppCollector appresult = (AppCollector)scan.Collectors["App"]; CallGraphCollector callgraph = (CallGraphCollector)scan.Collectors["CallGraph"]; // Code Rank foreach (NodeGraph nodeGraph in callgraph.Values) { CodeRank rank = new CodeRank(); rank.CalculateRank(nodeGraph); foreach (Node node in nodeGraph.Nodes) { try { m_dtCodeRank.Rows.Add(nodeGraph.Application, node.TypeName, node.MethodName, node.Rank); } catch (ConstraintException constraint) { Console.WriteLine(constraint.Message); } } } // App Usage foreach (AppResult app in appresult.Values) { m_dtAppStats.Rows.Add(app.AppName, app.SystemCalls.Count); } // Second Pass Visit scantype = new Visit(); scantype.Collectors.Register("Type", new TypeCollector(m_dtCodeRank)); scantype.DoScan(m_Files, htAppBin, filters); TypeCollector typeresult = (TypeCollector)scantype.Collectors["Type"]; // Type Usage + Coverage foreach (TypeResult tr in typeresult.Values) { foreach (MethodResult mr in tr.Methods.Values) { // systemType, systemMethod, methodLength, TotalUse, RankedUse, TotalAppsThatUse, Coverage m_dtResults.Rows.Add(tr.Name, mr.Name, -1, mr.MethodFrequency, mr.MethodRankedFrequency, mr.TotalAppCount, -1); } } // Join Coverage with the Usage data. JoinCoverage(); // Run Plugin Collectors. Plugins.ComputeResults(this, m_Files, htAppBin); }
public void ComputeResults(ICollection m_Files, Hashtable htAppBin, ICollection filters ) { // First Pass Visit scan = new Visit(); scan.Collectors.Register("App", new AppCollector()); scan.Collectors.Register("CallGraph", new CallGraphCollector()); scan.DoScan (m_Files, htAppBin, filters); AppCollector appresult = (AppCollector)scan.Collectors["App"]; CallGraphCollector callgraph = (CallGraphCollector)scan.Collectors["CallGraph"]; // Code Rank foreach (NodeGraph nodeGraph in callgraph.Values) { CodeRank rank = new CodeRank(); rank.CalculateRank(nodeGraph); foreach (Node node in nodeGraph.Nodes) { try { m_dtCodeRank.Rows.Add(nodeGraph.Application, node.TypeName, node.MethodName, node.Rank); } catch (ConstraintException constraint) { Console.WriteLine(constraint.Message); } } } // App Usage foreach (AppResult app in appresult.Values) { m_dtAppStats.Rows.Add(app.AppName, app.SystemCalls.Count); } // Second Pass Visit scantype = new Visit(); scantype.Collectors.Register("Type", new TypeCollector( m_dtCodeRank )); scantype.DoScan( m_Files, htAppBin, filters); TypeCollector typeresult = (TypeCollector)scantype.Collectors["Type"]; // Type Usage + Coverage foreach (TypeResult tr in typeresult.Values) { foreach (MethodResult mr in tr.Methods.Values) { // systemType, systemMethod, methodLength, TotalUse, RankedUse, TotalAppsThatUse, Coverage m_dtResults.Rows.Add(tr.Name, mr.Name, -1, mr.MethodFrequency, mr.MethodRankedFrequency, mr.TotalAppCount, -1); } } // Join Coverage with the Usage data. JoinCoverage(); // Run Plugin Collectors. Plugins.ComputeResults(this, m_Files, htAppBin); }