Пример #1
0
        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();
        }
Пример #2
0
        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);
        }