public static Method GetMethod(string codeFile, string methodKey) { var syntaxTree = GetSyntaxTree(codeFile); var semanticModel = GetSemanticModel(syntaxTree); var mds = GetMethodDeclarationSyntax((CompilationUnitSyntax)syntaxTree.GetRoot(), methodKey, semanticModel); var statementInterpreterHandler = new StatementInterpreterHandler(mds, semanticModel); return(statementInterpreterHandler.GetMethod()); }
public static CSharpLamdaExpression GetLamdaExpression(string codeFile, string methodName) { var syntaxTree = Helper.GetSyntaxTree(codeFile); var mds = Helper.GetMethodDeclarationSyntax((CompilationUnitSyntax)syntaxTree.GetRoot(), methodName); var semanticModel = Helper.GetSemanticModel(syntaxTree); var statementInterpreterHandler = new StatementInterpreterHandler(mds, semanticModel); var method = statementInterpreterHandler.GetMethod(); var interpreterHandler = new ExpressionInterpreterHandler(method); var lamdaExpression = interpreterHandler.GetLamdaExpression(); return(lamdaExpression); }
public CodeChangeRequest CompareTree(SyntaxTree newSyntaxTree, SyntaxTree oldSyntaxTree, SemanticModel semanticModel) { var codeChangesVisitor = new CodeChangesVisitor(); codeChangesVisitor.Visit(newSyntaxTree, oldSyntaxTree); var updateMethods = new List <Method>(); foreach (var mds in codeChangesVisitor.UpdatedMethods) { var interpreterHandler = new StatementInterpreterHandler(mds, semanticModel); var method = interpreterHandler.GetMethod(); updateMethods.Add(method); } var request = new CodeChangeRequest(); request.UpdateMethods = updateMethods; return(request); }