Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
 public abstract IList<RuleProblem> Analyze(RuleContext context);
Exemplo n.º 4
0
        // 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;
        }