public ORMModelTree Extract(MethodDeclarationSyntax methodDeclarationSyntaxNode) { var methodDeclaration = new MethodDeclaration(methodDeclarationSyntaxNode.Identifier.Text, methodDeclarationSyntaxNode.GetCompilationInfo()); this._ORMModelTree = new ORMModelTree(new ORMModelNode(methodDeclaration)); var extractor = new LINQToSQLDatabaseAccessingMethodCallExtractor(null, null, _databaseQueries.ToList(), null, null, null); extractor.Visit(methodDeclarationSyntaxNode); foreach (var dbAccessingMethodCall in extractor.DatabaseAccessingMethodCalls) { var ORMModelNode = new ORMModelNode(dbAccessingMethodCall); _ORMModelTree.RootNode.ChildNodes.Add(ORMModelNode); } return(_ORMModelTree); }
private async Task ExtractDatabaseAccessingMethodCallsAsync(Solution solution) { foreach (var project in solution.Projects) { foreach (var documentId in project.DocumentIds) { var document = solution.GetDocument(documentId); SyntaxNode root = await Task.Run(() => document.GetSyntaxRootAsync()); SemanticModel model = await Task.Run(() => document.GetSemanticModelAsync()); var databaseAccessingMethodCalls = new LINQToSQLDatabaseAccessingMethodCallExtractor(model, DatabaseEntityDeclarations, DatabaseQueries, null, null, null); databaseAccessingMethodCalls.Visit(root); foreach (var item in databaseAccessingMethodCalls.DatabaseAccessingMethodCallsAndSyntaxNodes) { DatabaseAccessingMethodCalls.Add(item.Key, item.Value); } } } }