public override IList <SqlRuleProblem> Analyze(SqlRuleExecutionContext ruleExecutionContext) { var problems = new List <SqlRuleProblem>(); var sqlObj = ruleExecutionContext.ModelElement; if (sqlObj == null || sqlObj.IsWhiteListed()) { return(problems); } var fragment = ruleExecutionContext.ScriptFragment.GetFragment(ProgrammingAndViewSchemaTypes); var selectStatementVisitor = new SelectStatementVisitor(); fragment.Accept(selectStatementVisitor); foreach (var select in selectStatementVisitor.Statements) { var selectStarVisitor = new SelectStarExpressionVisitor(); select.AcceptChildren(selectStarVisitor); problems.AddRange(selectStarVisitor.NotIgnoredStatements(RuleId) .Select(ss => new SqlRuleProblem(Message, sqlObj, ss))); } return(problems); }
public void TestHasSelectStarExpression() { const string sql = @"SELECT * from tbl1 where f1 = 12"; var visitor = new SelectStarExpressionVisitor(); RunTSqlFragmentVisitor.AnalyzeFragmentVisitorBase(sql, sql.ComputeHash(), visitor); Assert.IsTrue(visitor.IsSuspected); }