static void Main(string[] args) { var directoryBasedMethodParser = new DirectoryBasedMethodParser(); var methods = directoryBasedMethodParser.ParseAllMethods(@"I:\SF110-20130704-src\SF110-20130704-src\1_tullibee\src\main\java\com\ib\client"); /*var writer = new StreamWriter(@"I:\Arafat -pc\NTM 16\test.txt"); * * foreach (var method in methods) * { * writer.WriteLine(method.Signature); * foreach (var line in method.Body) * { * writer.WriteLine(line); * } * * writer.WriteLine("###################################################"); * } * * writer.Close();*/ var methodUtility = new MethodUtility(); foreach (var method in methods) { Console.WriteLine(method.Signature); var m = methodUtility.ConstructMethod(method.Signature, method.Body); Console.WriteLine("ReturnType:{0}, Name:{1}, Parameters:{2}", m.ReturnType, m.MethodName, m.Parameters); } Console.ReadLine(); }
public List <Method> GetMethods(string filePath) { var codeLines = new List <string>(); codeLines.AddRange(File.ReadAllLines(filePath)); var methods = new List <Method>(); try { for (int currentLineNumber = 0; currentLineNumber < codeLines.Count(); currentLineNumber++) { if (Regex.IsMatch(codeLines[currentLineNumber], MethodDeclarationExpr) || Regex.IsMatch(codeLines[currentLineNumber] + "{", MethodDeclarationExpr2)) { var method = new Method(); method.Signature = codeLines[currentLineNumber]; var stack = new Stack <string>(); if (codeLines[currentLineNumber].Contains(";")) //for interface { continue; } while (!codeLines[currentLineNumber].Contains("{")) { currentLineNumber++; } if (currentLineNumber == codeLines.Count()) { break; } stack.Push(codeLines[currentLineNumber]); while (stack.Count() > 0) { // Console.WriteLine(codeLines[currentLineNumber]); method.Body.Add(codeLines[currentLineNumber]); currentLineNumber++; if (codeLines[currentLineNumber].Contains("{")) { stack.Push(codeLines[currentLineNumber]); } if (codeLines[currentLineNumber].Contains("}")) { stack.Pop(); } } method.Body.Add("}"); method.Body.Remove(method.Signature); method = _methodUtility.ConstructMethod(method.Signature, method.Body); methods.Add(method); } } } catch (Exception exception) { // Console.WriteLine(exception.Message); } return(methods); }