using SQLLinter.Common; using SQLLinter.Infrastructure.Interfaces; namespace SQLLinter.Infrastructure.Parser; public class ViolationFixer : IViolationFixer { private readonly Dictionary Rules; private readonly IList Violations; public ViolationFixer( Dictionary rules, IList violations) { Rules = rules; Violations = violations; } public void Fix() { var files = Violations.GroupBy(x => x.FileName); foreach (var file in files) { var fileViolations = file .OrderByDescending(x => x.Line) .ThenByDescending(x => x.Column) .ToList(); var fileLines = File.ReadAllLines(file.Key).ToList(); var fileLineActions = new Common.FileLineActions(fileViolations, fileLines); foreach (var violation in fileViolations) { if (Rules.ContainsKey(violation.RuleName)) { if (violation.Line == 1 && violation.Column > fileLines[violation.Line - 1].Length + 1) { continue; } var lines = new List(fileLines); //Rules[violation.RuleName].FixViolation(lines, violation, fileLineActions); } } File.WriteAllLines(file.Key, fileLines); } } }