Ejemplo n.º 1
0
        /// <summary>
        /// Some errors do not come with Error ID's or Warning ID's.
        /// Example MSBuild &lt;Error&gt;&lt;/Error&gt; &amp; &lt;Warning&gt;&lt;/Warning&gt; 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);
        }
Ejemplo n.º 2
0
        /// <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);
        }