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; }
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; } } }