Esempio n. 1
0
        private List<ObjectInfo> GetCalledMtFunctionsNameInsideUILayer(List<string> lines, int lineIndex, string variableName, bool isClassVariable, bool isUsingVariable = false)
        {
            var result = new List<ObjectInfo>();
            bool isInWith = false;

            for (int i = lineIndex + 1; i < lines.Count; i++)
            {
                var pureLine = lines[i].Trim();
                if (pureLine.StartsWith("'"))
                {
                    continue;
                }

                // Check variable name within method scope
                if (!isClassVariable)
                {
                    if (pureLine.StartsWith("End Function") || pureLine.StartsWith("End Sub"))
                    {
                        break;
                    }
                }

                if (isUsingVariable)
                {
                    if (pureLine.StartsWith("End Using"))
                    {
                        break;
                    }
                }

                if (isInWith)
                {
                    if ("End With".Equals(pureLine))
                    {
                        isInWith = false;
                    }
                }

                if (pureLine.StartsWith(string.Format("With {0}", variableName)))
                {
                    isInWith = true;
                }

                if (isInWith)
                {
                    var si = -1;
                    var oi = -1;
                    var devia = 1;
                    if (pureLine.StartsWith("."))
                    {
                        si = 0;
                        oi = pureLine.IndexOf("(", StringComparison.Ordinal);
                    }

                    if (pureLine.Contains(" ."))
                    {
                        si = pureLine.IndexOf(" .", StringComparison.Ordinal);

                        oi = pureLine.IndexOf("(", si, StringComparison.Ordinal);

                        devia = 2;
                    }

                    if (si == -1 || oi <= si)
                    {
                        continue;
                    }

                    if (si == -1) continue;
                    var mn = pureLine.Substring(si + devia,
                                                   oi - (si + devia));

                    if (mn.Contains("=") || mn.Contains(".") || mn.Contains(" ") || mn.Contains(","))
                    {
                        continue;
                    }

                    if (mn != "UseDefaultLocation" && mn != "Dispose")
                    {
                        ObjectInfo method = new ObjectInfo();
                        method.Name = mn;
                        method.LineNumber = i.ToString();

                        result.Add(method);
                    }
                }

                var facadeStartedIndex = pureLine.IndexOf(string.Format("{0}.", variableName), StringComparison.Ordinal);
                if (facadeStartedIndex < 0)
                {
                    continue;
                }

                var openBracketIndex = pureLine.IndexOf("(", facadeStartedIndex, StringComparison.Ordinal);

                if (openBracketIndex < 0)
                {
                    continue;
                }

                var methodName = pureLine.Substring(facadeStartedIndex + variableName.Length + 1,
                                                    openBracketIndex - (facadeStartedIndex + variableName.Length + 1));


                if (methodName.Contains("=") || methodName.Contains(".") || methodName.Contains(" ") || methodName.Contains(","))
                {
                    continue;
                }

                if (methodName != "UseDefaultLocation" && methodName != "Dispose")
                {
                    ObjectInfo method = new ObjectInfo();
                    method.Name = methodName;
                    method.LineNumber = i.ToString();

                    result.Add(method);
                }
            }

            return result;
        }
Esempio n. 2
0
        private void GetStoredProcedureNameInAllMtMethods(string classContent, string className)
        {
            var lines = classContent.Split(new[] { "\r\n" }, StringSplitOptions.None).ToList();

            var i = 0;
            var isCheckingStoredProcedure = false;
            string methodName = string.Empty;

            while (i < lines.Count)
            {
                var pureLine = lines[i++].Trim();
                if (pureLine.StartsWith("'")) continue;

                // Check reference to Other class different to MT
                foreach (var cl in _relatedCommonCLS)
                {
                    if (pureLine.Contains(cl) || pureLine.Contains("New " + cl.Split(new[] { "." }, StringSplitOptions.RemoveEmptyEntries)[1]))
                    {
                        _mtClassesDictionary[className][methodName].Add(_mtClassesDictionary[cl]["WARNING"][0]);
                    }
                }

                if (pureLine.StartsWith("Public Function") ||
                    pureLine.StartsWith("Public Sub") ||
                    pureLine.StartsWith("Public Shared Function") ||
                    pureLine.StartsWith("Public Shared Sub") ||
                    pureLine.StartsWith("Private Shared Function") ||
                    pureLine.StartsWith("Private Shared Sub") ||
                    pureLine.StartsWith("Private Function") ||
                    pureLine.StartsWith("Private Sub") ||
                    pureLine.StartsWith("Private Function") ||
                    pureLine.StartsWith("Private Sub") ||
                    pureLine.StartsWith("Sub") ||
                    pureLine.StartsWith("Function"))
                {
                    // Turn on flag to start look for stored procedure within current method.
                    isCheckingStoredProcedure = true;

                    // Get method name
                    methodName = pureLine.Substring(0, pureLine.IndexOf("(", StringComparison.Ordinal));
                    methodName = methodName.Substring(methodName.LastIndexOf(" ", StringComparison.Ordinal) + 1);

                    if (!_mtClassesDictionary[className].ContainsKey(methodName))
                    {
                        _mtClassesDictionary[className].Add(methodName, new List<ObjectInfo>());
                        if (_directMT2MTDictionary.ContainsKey(className) && _directMT2MTDictionary[className].ContainsKey(methodName))
                        {
                            var warningMsg = "WARNING! CHECK IN METHOD: " + className + "." + methodName + "() FOR CLASS: " + _directMT2MTDictionary[className][methodName];

                            var sp = new ObjectInfo();
                            sp.Name = warningMsg;
                            sp.LineNumber = "---";

                            _mtClassesDictionary[className][methodName].Add(sp);
                        }
                    }
                }

                // Check only within scope
                if (isCheckingStoredProcedure)
                {
                    if (pureLine.Contains(".CommandText"))
                    {
                        string storedProcedureName;

                        if (pureLine.IndexOf("\"", StringComparison.Ordinal) < 0)
                        {
                            storedProcedureName = pureLine.Substring(pureLine.IndexOf("=", StringComparison.Ordinal) + 1).Trim();
                        }
                        else
                        {
                            storedProcedureName = pureLine.Substring(pureLine.IndexOf("\"", StringComparison.Ordinal) + 1).Trim();
                            storedProcedureName = storedProcedureName.Substring(0, storedProcedureName.Length - 1);
                        }
                        ObjectInfo sp = new ObjectInfo();
                        sp.Name = storedProcedureName;
                        sp.LineNumber = i.ToString();
                        _mtClassesDictionary[className][methodName].Add(sp);
                    }
                    else if (pureLine.Contains("SqlCommand(") && !pureLine.Contains("SqlCommand()"))
                    {
                        var parameter = pureLine.Substring(pureLine.IndexOf("(") + 1, pureLine.LastIndexOf(")") - 1 - pureLine.IndexOf("(") + 1);

                        if (parameter.Contains(","))
                        {
                            parameter = parameter.Split(',')[0];
                        }

                        var oi = new ObjectInfo();
                        oi.Name = parameter;
                        oi.LineNumber = i.ToString();

                        _mtClassesDictionary[className][methodName].Add(oi);
                    }
                }

                if (isCheckingStoredProcedure && (pureLine.StartsWith("End Function") || pureLine.StartsWith("End Sub")))
                {
                    // End of scope of current method.
                    isCheckingStoredProcedure = false;
                }
            }
        }