/// <summary> /// Some errors do not come with Error ID's or Warning ID's. /// Example MSBuild <Error></Error> & <Warning></Warning> elements. /// To support this I am creating this hack to check only the description based /// on Partial flag set to false. /// </summary> /// <param name="currentdescription"></param> /// <returns></returns> internal bool CheckUnassignedDescriptionExists(string currentdescription) { if (expectederrors == null || expectederrors.Count == 0) { return(false); } IDictionaryEnumerator enumerator = expectederrors.GetEnumerator(); while (enumerator.MoveNext()) { ErrorWarningCode ewc = (ErrorWarningCode)enumerator.Value; if (String.IsNullOrEmpty(ewc.Description) == false) { if (ewc.Description.ToLowerInvariant() == currentdescription.ToLowerInvariant()) { if (ewc.IsIgnoreable) { ewc = null; goto SuccessFullExit; } } else if (currentdescription.ToLowerInvariant().Contains(ewc.Description.ToLowerInvariant())) { if (ewc.IsIgnoreable && ewc.IsPartial) { ewc = null; goto SuccessFullExit; } } else if (ErrorWarningCode.Compare(ewc.description, currentdescription)) { if (ewc.IsIgnoreable) { ewc = null; goto SuccessFullExit; } } } } enumerator = null; return(false); SuccessFullExit: enumerator = null; return(true); }
/// <summary> /// This is specific handling for duplicated Error/Warning ID's. /// </summary> /// <param name="actualerrorwarning"></param> /// <returns></returns> private bool IsDuplicatedErrorMessageIgnorable(ref ErrorWarningCode actualerrorwarning) { if (actualerrorwarning == null) { return(false); } ErrorWarningCode tempewc = null; IDictionaryEnumerator enumerator = expectederrors.GetEnumerator(); while (enumerator.MoveNext()) { if (enumerator.Key.ToString().StartsWith(actualerrorwarning.ID)) { tempewc = (ErrorWarningCode)enumerator.Value; if (tempewc == null) { tempewc = null; continue; } if (String.IsNullOrEmpty(tempewc.Description)) { tempewc = null; continue; } if (actualerrorwarning.Description.Contains(tempewc.Description)) { break; } if (ErrorWarningCode.Compare(tempewc.description, actualerrorwarning.Description)) { currentduplicateerrorwarningid = actualerrorwarning; tempewc = null; enumerator = null; return(true); } tempewc = null; } } // Should never happen! if (tempewc == null) { return(false); } if (actualerrorwarning.Equals(tempewc) == false) { return(false); } currentduplicateerrorwarningid = tempewc; tempewc = null; enumerator = null; return(currentduplicateerrorwarningid.IsIgnoreable); }