Files
SQLLint/SQLLinter/Infrastructure/Parser/ViolationFixer.cs

51 lines
1.5 KiB
C#

using SQLLinter.Common;
using SQLLinter.Infrastructure.Interfaces;
namespace SQLLinter.Infrastructure.Parser;
public class ViolationFixer : IViolationFixer
{
private readonly Dictionary<string, IRule> Rules;
private readonly IList<IRuleViolation> Violations;
public ViolationFixer(
Dictionary<string, IRule> rules,
IList<IRuleViolation> 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<string>(fileLines);
//Rules[violation.RuleName].FixViolation(lines, violation, fileLineActions);
}
}
File.WriteAllLines(file.Key, fileLines);
}
}
}