Esempio n. 1
0
        private List <SyntaxNode> getEntryNodes(SyntaxTree mainTree)
        {
            List <SyntaxNode> nodes = new List <SyntaxNode>();

            if (mainTree != null)
            {
                ClassDeclarationSyntax mainClass = ProjectAnalyzerHelper.GetMainClass(mainTree);
                if (mainClass != null)
                {
                    ConstructorDeclarationSyntax cons = ProjectAnalyzerHelper.GetConstructor(mainClass);
                    MethodDeclarationSyntax      main = ProjectAnalyzerHelper.GetMethodDeclaration(mainClass, ProjectAnalyzer.MainFunctionName);
                    MethodDeclarationSyntax      save = ProjectAnalyzerHelper.GetMethodDeclaration(mainClass, ProjectAnalyzer.SaveFunctionName);
                    if (cons != null)
                    {
                        nodes.Add(cons);
                    }
                    if (main != null)
                    {
                        nodes.Add(main);
                    }
                    if (save != null)
                    {
                        nodes.Add(save);
                    }
                }
            }
            return(nodes);
        }
Esempio n. 2
0
        private SyntaxTree findMainTree(Project project)
        {
            SyntaxTree result = null;

            if (project != null && project.Documents != null && project.Documents.Count() > 0)
            {
                foreach (Document doc in project.Documents)
                {
                    SyntaxTree tree = doc.GetSyntaxTreeAsync().Result;
                    if (tree != null)
                    {
                        ClassDeclarationSyntax mainClass = ProjectAnalyzerHelper.GetMainClass(tree);
                        if (mainClass != null)
                        {
                            BaseListSyntax baseList = mainClass.BaseList;
                            if (baseList != null)
                            {
                                SeparatedSyntaxList <BaseTypeSyntax> types = baseList.Types;
                                if (types != null && types.Count() > 0)
                                {
                                    BaseTypeSyntax baseType = types.First();
                                    if (baseType != null)
                                    {
                                        if (baseType.ToString() == ProjectAnalyzer.DefaultProgramBaseType)
                                        {
                                            result = doc.GetSyntaxTreeAsync().Result;
                                            Console.Out.WriteLine("Found program file: " + doc.FilePath);
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(result);
        }