public UsedColumnsAnalysis(IMetadataHost h, ControlFlowGraph c, ConstantsInfoProvider ci, List <ITypeDefinition> r, List <ITypeDefinition> cd) { host = h; cfg = c; constInfo = ci; rowTypes = r; columnTypes = cd; Initialize(); }
public UsedColumnsAnalysis(IMetadataHost h, ControlFlowGraph c, ConstantsInfoProvider ci, ITypeDefinition r, ITypeDefinition cd) { host = h; cfg = c; constInfo = ci; rowType = r; columnType = cd; ColumnIndexAccesses = 0; ColumnStringAccesses = 0; Initialize(); }
/// <summary> /// Entry point method for performing used-columns analysis. The analysis expects results of /// constant-set propagation analysis. /// </summary> /// <param name="cfg"></param> /// <param name="cspInfo"></param> /// <param name="results"></param> /// <returns></returns> private UsedColumnsAnalysis DoUsedColumnsAnalysis(ControlFlowGraph cfg, ConstantsInfoProvider cspInfo, ScopeMethodAnalysisResult results) { Utils.WriteLine("Running used columns analysis..."); var clsAnalysis = new UsedColumnsAnalysis(mhost, cfg, cspInfo, rowType, columnType); var outcome = clsAnalysis.Analyze(); results.UsedColumnsSummary = outcome; // We only save statistics about column accesses for methods with useful results. if (!results.UsedColumnsSummary.IsTop && !results.UsedColumnsSummary.IsBottom) { results.ColumnStringAccesses += clsAnalysis.ColumnStringAccesses; results.ColumnIndexAccesses += clsAnalysis.ColumnIndexAccesses; } Utils.WriteLine(results.UsedColumnsSummary.ToString()); Utils.WriteLine("Done with used columns analysis"); return(clsAnalysis); }