public static List <ClassMemberCompareElement> CompareClasses(ClassCodeElement existingClass, ClassCodeElement newClass, bool removeOldMembers, bool keepObsolete) { List <ClassMemberCompareElement> l = CompareElements(existingClass.Fields, newClass.Fields, removeOldMembers, keepObsolete); l.AddRange(CompareElements(existingClass.Properties, newClass.Properties, removeOldMembers, keepObsolete)); l.AddRange(CompareElements(existingClass.Methods, newClass.Methods, removeOldMembers, keepObsolete)); List <MemberCodeElement> allNew = new List <MemberCodeElement> (); newClass.Fields.ForEach((GenericFieldCodeElement element) => allNew.Add(element)); newClass.Properties.ForEach((GenericPropertyCodeElement element) => allNew.Add(element)); newClass.Methods.ForEach((GenericMethodCodeElement element) => allNew.Add(element)); l.ForEach((ClassMemberCompareElement element) => { if (element.result == ClassMemberCompareElement.Result.Obsolete && element is CodeElementBasedCompareElement) { MemberCodeElement underlyingElement = ((CodeElementBasedCompareElement)element).UnderlyingElement; underlyingElement.Obsolete = true; allNew.Add(underlyingElement); } }); int nextToLast = allNew.Count - 2; for (int i = 0; i <= nextToLast; i++) { MemberCodeElement element = allNew [i]; int duplicateIndex = allNew.FindIndex(i + 1, (MemberCodeElement m) => m.Equals(element)); if (duplicateIndex >= 0) { MemberCodeElement duplicate = allNew [duplicateIndex]; Func <MemberCodeElement, string> formatter = (MemberCodeElement m) => { return((m.Obsolete ? "obsolete " : "") + m.MemberType + " " + m.ElementType + " " + m.GetSignature()); }; string message = string.Format("Possible naming conflict between [{0}] and [{1}].", formatter(element), formatter(duplicate)); if (duplicate.Obsolete) { message += " Previous element " + formatter(duplicate) + " will be removed."; } else { message += " Avoid using the same name for an Animator state and a parameter."; } l.Add(new CodeElementBasedCompareElement(element, message)); Logger.Debug(message); } } return(l); }
public CodeElementBasedCompareElement(MemberCodeElement element, string message) : this(element, Result.Error) { this.Message = message; }
public CodeElementBasedCompareElement(MemberCodeElement element, Result result) : base(result) { UnderlyingElement = element; }
public CodeElementBasedCompareElement (MemberCodeElement element, string message) : this (element, Result.Error){ this.Message = message; }
public CodeElementBasedCompareElement (MemberCodeElement element, Result result) : base (result){ UnderlyingElement = element; }