public override IList<RuleProblem> Analyze(RuleContext context) { TSqlScript script = context.ScriptFragment as TSqlScript; Debug.Assert(script != null, "TSqlScript is expected"); Visitor = new StoredProcVisitor(); script.Accept(Visitor); if (Visitor.WasVisited && !(Visitor as StoredProcVisitor).HasNocountOn) { AddProblem(Resources.SetNoCountOnRule); } return Problems; }
public override IList<RuleProblem> Analyze(RuleContext context) { TSqlScript script = context.ScriptFragment as TSqlScript; Debug.Assert(script != null, "TSqlScript is expected"); Visitor = new TopRowFilterVisitor(); script.Accept(Visitor); if (Visitor.WasVisited && !(Visitor as TopRowFilterVisitor).HasParenthesis) { AddProblem(Resources.TopRule); } return Problems; }
public abstract IList<RuleProblem> Analyze(RuleContext context);
// Main run method private IList<RuleProblem> Run(TextReader input, IList<Rule> rules) { List<RuleProblem> problems = new List<RuleProblem>(); var parser = new TSql100Parser(true); var parseErrors = new List<ParseError>() as IList<ParseError>; IScriptFragment scriptFragment = parser.Parse(input, out parseErrors); if (parseErrors.Count > 0) { // TODO: do custom exception var error = parseErrors[0]; var ex = new ArgumentException(error.Message); throw ex; } var context = new RuleContext { ScriptFragment = scriptFragment, }; foreach (var rule in rules) { var rulePoblems = rule.Analyze(context); problems.AddRange(rulePoblems); } return problems; }