Пример #1
0
        public void FindDapperLiterals_DeclareLiteral()
        {
            var sql = "select * from User where UserTypeId = {=Admin}";

            var literals = SqlParser.FindDapperLiterals(sql);

            Assert.AreEqual(1, literals.Count);
            Assert.AreEqual("Admin", literals.First());
        }
        public static void TryReportDiagnostics(
            string sqlText,
            ICollection <string> sharpParameters,
            Location location,
            SyntaxNodeAnalysisContext context,
            Orm orm)
        {
            if (string.IsNullOrEmpty(sqlText))
            {
                return;
            }

            if (sharpParameters == null)
            {
                return;
            }

            const char SqlVariableDeclarationSymbol = '@';
            var        sqlVariables = SqlParser.FindParameters(sqlText).ToList();

            if (orm == Orm.Dapper)
            {
                sqlVariables.AddRange(SqlParser.FindDapperLiterals(sqlText));
            }

            sharpParameters = sharpParameters.Select(p => p.Trim(SqlVariableDeclarationSymbol)).ToList();

            foreach (var notFoundArgument in sqlVariables.Except(
                         sharpParameters,
                         StringComparer.InvariantCultureIgnoreCase))
            {
                context.ReportDiagnostic(Diagnostic.Create(CsharpArgumentNotFoundRule, location, notFoundArgument));
            }

            foreach (var notFoundVariable in sharpParameters.Except(
                         sqlVariables,
                         StringComparer.InvariantCultureIgnoreCase))
            {
                context.ReportDiagnostic(Diagnostic.Create(SqlParameterNotFoundRule, location, notFoundVariable));
            }
        }