Beispiel #1
0
        public void VisitRules(string sqlPath, IEnumerable <IRuleException> ignoredRules, Stream sqlFileStream)
        {
            TextReader sqlTextReader = new StreamReader(sqlFileStream);
            var        sqlFragment   = fragmentBuilder.GetFragment(sqlTextReader, out var errors);

            sqlFileStream.Seek(0, SeekOrigin.Begin);

            if (errors.Any())
            {
                HandleParserErrors(sqlPath, errors, ignoredRules);
            }

            var ruleVisitors = ruleVisitorBuilder.BuildVisitors(sqlPath, ignoredRules);

            foreach (var visitor in ruleVisitors)
            {
                sqlFragment?.Accept(visitor);
            }
        }
Beispiel #2
0
        public void VisitRules(string sqlPath, Stream sqlFileStream)
        {
            TextReader sqlTextReader = new StreamReader(sqlFileStream);
            var        sqlFragment   = fragmentBuilder.GetFragment(sqlTextReader, out var errors);

            if (errors.Count > 0)
            {
                reporter.ReportViolation(new RuleViolation(sqlPath, null, "TSQL not syntactically correct", 0, 0, RuleViolationSeverity.Error));
                return;
            }

            sqlFileStream.Seek(0, SeekOrigin.Begin);
            var ignoredRules = ruleExceptionFinder.GetIgnoredRuleList(sqlFileStream).ToList();

            var ruleVisitors = ruleVisitorBuilder.BuildVisitors(sqlPath, ignoredRules);

            foreach (var visitor in ruleVisitors)
            {
                sqlFragment.Accept(visitor);
            }
        }
        public void VisitRules(string sqlPath, IEnumerable <IRuleException> ignoredRules, Stream sqlFileStream)
        {
            var overrides     = overrideFinder.GetOverrideList(sqlFileStream);
            var overrideArray = overrides as IOverride[] ?? overrides.ToArray();

            var sqlFragment = fragmentBuilder.GetFragment(GetSqlTextReader(sqlFileStream), out var errors, overrideArray);

            // notify user of syntax errors
            var ruleExceptions = ignoredRules as IRuleException[] ?? ignoredRules.ToArray();

            if (errors.Any())
            {
                HandleParserErrors(sqlPath, errors, ruleExceptions);
            }

            // lint what can be linted, even if there are errors
            var ruleVisitors = ruleVisitorBuilder.BuildVisitors(sqlPath, ruleExceptions);

            foreach (var visitor in ruleVisitors)
            {
                VisitFragment(sqlFragment, visitor, overrideArray);
            }
        }