/// <summary> /// Find MethodDefinition matching from MethodCall /// </summary> /// <param name="mc"></param> /// <returns></returns> public static MethodDefinition FindMatchedMd(MethodCall mc) { INamedEntity match = null; try { match = mc.FindMatches().FirstOrDefault(); } catch (Exception e) { Console.WriteLine("{0}:{1}:{2}: Call Exception {3}", mc.Location.SourceFileName, mc.Location.StartingLineNumber, mc.Location.StartingColumnNumber, e); } if (null != match) { //Console.WriteLine("match : {0} ", match); if (match is MethodDefinition) { //Console.WriteLine("method Definition"); MethodDefinition md = (MethodDefinition)match; //Console.WriteLine("md full name :" + md.GetFullName()); return md; } } return null; }
/// <summary> /// /// </summary> /// <param name="mc"></param> private void UpdateMethodCall(MethodCall mc) { var args = mc.Arguments.ToList(); var md = mc.FindMatches().FirstOrDefault() as MethodDefinition; if(md != null && IsLocalMethod(md)) { //local method InvokedLocalMethods.Add(md); } else { //external method InvokedExternalMethods.Add(md); } foreach(var arg in args) { UpdateByExpression(arg); } }