private static bool ContainsExpression(ExecutableStatementSyntax container, ExpressionSyntax contained) { return(contained != null && container.DescendantNodes() .OfType <MemberAccessExpressionSyntax>() .Any(m => m.Expression != null && VisualBasicEquivalenceChecker.AreEquivalent(contained, m.Expression))); }
private static bool IsCandidateStatement(ExecutableStatementSyntax statement, ExpressionSyntax expression) { return(statement != null && IsAllowedStatement(statement) && !ContainsEmptyMemberAccess(statement) && ContainsExpression(statement, expression)); }
private static bool IsAllowedStatement(ExecutableStatementSyntax statement) { return(WhiteListedStatementTypes.Contains(statement.GetType())); }
private static bool ContainsEmptyMemberAccess(ExecutableStatementSyntax container) { return(container.DescendantNodes() .OfType <MemberAccessExpressionSyntax>() .Any(m => m.Expression == null)); }