using Microsoft.SqlServer.TransactSql.ScriptDom; using SQLLinter.Common; namespace SQLLinter.Infrastructure.Rules; public class InsertValuesInsteadOfSelectRule : BaseRuleVisitor { public override string Text => "Для вставки константных значений используйте VALUES(...)"; public override void Visit(InsertStatement node) { // Проверяем, что источник данных - SELECT if (node.InsertSpecification.InsertSource is SelectInsertSource selectSource) { var query = selectSource.Select as QuerySpecification; if (query != null) { // Если в SELECT нет таблиц (т.е. просто SELECT 1,2,3) if (query.FromClause == null || query.FromClause.TableReferences.Count == 0) { AddViolation(node); } } } } }