Ejemplo n.º 1
0
        private static List <KBObject> GetObjectsWithProblems(List <KBObject> objs, IOutputService output)
        {
            int             numObj              = 0;
            int             objWithProblems     = 0;
            List <KBObject> objectsWithProblems = new List <KBObject>();

            foreach (KBObject obj in objs)
            {
                ICallableObject callableObject = obj as ICallableObject;

                if (callableObject != null)
                {
                    numObj += 1;
                    if ((numObj % 100) == 0)
                    {
                        output.AddLine("KBDoctor", "Processing " + obj.Name);
                    }
                    foreach (Signature signature in callableObject.GetSignatures())
                    {
                        Boolean someInOut = false;
                        foreach (Parameter parm in signature.Parameters)
                        {
                            if (parm.Accessor.ToString() == "PARM_INOUT")
                            {
                                someInOut = true;
                                break;
                            }
                        }
                        if (someInOut)
                        {
                            string ruleParm = Utility.ExtractRuleParm(obj);
                            if (ruleParm != "")
                            {
                                int countparms     = ruleParm.Split(new char[] { ',' }).Length;
                                int countsemicolon = ruleParm.Split(new char[] { ':' }).Length - 1;
                                if (countparms != countsemicolon)
                                {
                                    objWithProblems += 1;
                                    objectsWithProblems.Add(obj);
                                    OutputError err = new OutputError("Parameter without IN/OUT/INOUT ", MessageLevel.Error, new  KBObjectPosition(obj.Parts.Get <RulesPart>()));
                                    output.Add("KBDoctor", err);
                                }
                            }
                        }
                    }
                }
            }

            return(objectsWithProblems);
        }