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); } }
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); } }