public void Analyze(SqlFileContext context) { this.context = context; var visitor = new AllNodesVisitor(NodeAction); this.context.Fragment.Accept(visitor); }
public void Analyze(SqlFileContext context) { var visitor = new AllNodesVisitor( (node) => { List<ISkimmer<SqlFileContext>> skimmersList; if (node == null) { return; } if (this.typeToSkimmersMap.TryGetValue(node.GetType(), out skimmersList)) { foreach (ISqlSkimmer skimmer in skimmersList) { context.Fragment = node; try { skimmer.Analyze(context); } catch (Exception ex) { RuntimeErrors |= AnalyzeCommand.LogUnhandledRuleExceptionAnalyzingTarget( this.disabledSkimmers, context, skimmer, ex); } } } } ); context.Fragment.Accept(visitor); }
public override AnalysisApplicability CanAnalyze(SqlFileContext context, out string reasonIfNotApplicable) { reasonIfNotApplicable = null; AnalysisApplicability result = AnalysisApplicability.ApplicableToSpecifiedTarget; if (context.Policy == null) { reasonIfNotApplicable = RuleResources.SQL2009_MissingConfig; result = AnalysisApplicability.NotApplicableDueToMissingConfiguration; } return result; }
public override AnalysisApplicability CanAnalyze(SqlFileContext context, out string reasonIfNotApplicable) { reasonIfNotApplicable = null; AnalysisApplicability result = AnalysisApplicability.ApplicableToSpecifiedTarget; if (context.Policy == null) { reasonIfNotApplicable = RuleResources.SQL2009_MissingConfig; result = AnalysisApplicability.NotApplicableDueToMissingConfiguration; } return(result); }
public override void Analyze(SqlFileContext context) { ColumnDefinition node = (ColumnDefinition)context.Fragment; SqlDataTypeReference sdtr = node.DataType as SqlDataTypeReference; if (sdtr == null) { return; } if (sdtr.SqlDataTypeOption != SqlDataTypeOption.VarBinary && sdtr.SqlDataTypeOption != SqlDataTypeOption.VarChar && sdtr.SqlDataTypeOption != SqlDataTypeOption.NVarChar) { return; } if (sdtr.Parameters.Count > 0) { Region region = sdtr.CreateRegion(); int size = Int32.Parse(sdtr.Parameters[0].Value); if (size <= context.Policy.GetProperty(SmallSizeThreshold)) { // The data type for column '{0}' was defined as {1} of a // small size ({2}) which may incur additional storage and // performance costs. Declare this data type as a fixed size // or ignore the warning in cases performance is not a concern. context.Logger.Log(this, RuleUtilities.BuildResult(ResultKind.Warning, context, region, nameof(RuleResources.SQL2009_Default), node.ColumnIdentifier.Value, sdtr.SqlDataTypeOption.ToString(), size.ToString())); } } return; }
public void Analyze(SqlFileContext context) { var visitor = new AllNodesVisitor( (node) => { List <ISkimmer <SqlFileContext> > skimmersList; if (node == null) { return; } if (this.typeToSkimmersMap.TryGetValue(node.GetType(), out skimmersList)) { foreach (ISqlSkimmer skimmer in skimmersList) { context.Fragment = node; try { skimmer.Analyze(context); } catch (Exception ex) { RuntimeErrors |= AnalyzeCommand.LogUnhandledRuleExceptionAnalyzingTarget( this.disabledSkimmers, context, skimmer, ex); } } } } ); context.Fragment.Accept(visitor); }