private static File BuildFileCFGAndExtractFileInformation(KeyValuePair<string, XmlDocument> parsedFile)
{
var traverser = new XmlTraverser ();
var metricAnalyzer = new MetricVisitor ();
var extractor = new ClassAndFunctionExtractor ();
var printer = new ASTPrinter (Console.Out);
var cfgcreator = new SuperCFGCreator ();
traverser.AddVisitor (extractor);
traverser.AddVisitor (metricAnalyzer);
traverser.Traverse (parsedFile.Value.FirstChild.NextSibling);
cfgcreator.Traverse (parsedFile.Value.FirstChild.NextSibling);
var ctlPrep = new CFGCTLPreparation ();
ctlPrep.AddSelfLoops (cfgcreator.Graph);
File file = new File (parsedFile.Value) {
CFG = cfgcreator.Graph,
FullPath = parsedFile.Key,
Interfaces = extractor.Interfaces.GroupBy (i => i.Name, i => i).ToDictionary (i => i.Key, i => i.ToList ()),
Classes = extractor.Classes.GroupBy (c => c.Name, c => c).ToDictionary (c => c.Key, c => c.ToList ()),
Closures = extractor.Closures.ToArray (),
Functions = extractor.Functions.GroupBy (i => i.Name, i => i).ToDictionary (i => i.Key, i => i.ToList ())
};
return file;
}