Example #1
0
        public void Analyze(SqlFileContext context)
        {
            this.context = context;
            var visitor = new AllNodesVisitor(NodeAction);

            this.context.Fragment.Accept(visitor);
        }
Example #2
0
        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;
 }
Example #4
0
        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 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;
        }
Example #7
0
        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);
        }
Example #8
0
 public void Analyze(SqlFileContext context)
 {
     this.context = context;
     var visitor = new AllNodesVisitor(NodeAction);
     this.context.Fragment.Accept(visitor);
 }