public void ExtractInnerAndOuterMethodInvocations() { ForeignDataAccessInvocations.Clear(); InnerDataAccessInvocations.Clear(); //Note: call this after the class has been fully parsed to avoid missing inner invocations. foreach (var invocation in MethodInvocations) { if (ParentClass != null && ParentClass.Methods.Any(x => x.Name.Equals(invocation.Content))) { InnerMethodInvocations.Add(invocation); } else { OuterMethodInvocations.Add(invocation); } } ForeignDataAccessInvocations.AddRange(OuterMethodInvocations.Where(x => !string.IsNullOrEmpty(x.AccessedField)).ToList()); InnerDataAccessInvocations.AddRange(InnerMethodInvocations.Where(x => !string.IsNullOrEmpty(x.AccessedField)).ToList()); DataAccessInvocations.AddRange(ForeignDataAccessInvocations); DataAccessInvocations.AddRange(InnerDataAccessInvocations); }
public void FindRelatedClassForOutboundInvocation(List <Class> totalClassOverView) { OuterMethodInvocations.ToList().ForEach(x => x.DeclaredClass = ( totalClassOverView.FirstOrDefault(y => y.Methods.Any(z => z.Name == x.Content))?.Name )); }