Exemple #1
0
        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;
		}