static void GenerateFacts(ClassAndMethodVisitor visitor) { StreamWriter tacLogSW = new StreamWriter(Path.Combine(ConfigParams.LogDir, "tac_log.txt")); StreamWriter factGenLogSW = new StreamWriter(Path.Combine(ConfigParams.LogDir, "factgen_log.txt")); factGen = new FactGenerator(tacLogSW, factGenLogSW); factGen.classes = rtaAnalyzer.classes; factGen.methods = rtaAnalyzer.methods; factGen.types = rtaAnalyzer.types; factGen.allocClasses = rtaAnalyzer.allocClasses; factGen.entryPtMethods = rtaAnalyzer.entryPtMethods; factGen.addrTakenInstFlds = rtaAnalyzer.addrTakenInstFlds; factGen.addrTakenStatFlds = rtaAnalyzer.addrTakenStatFlds; factGen.addrTakenMethods = rtaAnalyzer.addrTakenMethods; factGen.addrTakenLocals = rtaAnalyzer.addrTakenLocals; factGen.GenerateTypeAndMethodFacts(); factGen.GenerateChaFacts(); visitor.SetupRTAAnalyzer(null); visitor.SetupFactGenerator(factGen); foreach (ITypeDefinition ty in rtaAnalyzer.classes) { visitor.Traverse(ty); } factGen.CheckDomX(); tacLogSW.Close(); }
public void SetupFactGenerator(FactGenerator factGen) { this.factGen = factGen; }