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