< Summary

Information
Class: AspxLint.Core.Rules.Ws001TrailingWhitespace
Assembly: AspxLint.Core
File(s): D:\a\claude-aspx-lint\claude-aspx-lint\src\AspxLint.Core\Rules\Ws001TrailingWhitespace.cs
Line coverage
100%
Covered lines: 10
Uncovered lines: 0
Coverable lines: 10
Total lines: 44
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Id()100%11100%
get_Name()100%11100%
get_Severity()100%11100%
get_Description()100%11100%
get_HasFix()100%11100%
.cctor()100%11100%
Fix(...)100%22100%

File(s)

D:\a\claude-aspx-lint\claude-aspx-lint\src\AspxLint.Core\Rules\Ws001TrailingWhitespace.cs

#LineLine coverage
 1using System.Text.RegularExpressions;
 2
 3namespace AspxLint.Core.Rules;
 4
 5public sealed class Ws001TrailingWhitespace : IRule
 6{
 2277    public string Id => "WS-001";
 468    public string Name => "Espaces en fin de ligne";
 439    public Severity Severity => Severity.Info;
 10    public string Description =>
 2511        "Les espaces ou tabulations en fin de ligne polluent les diffs Git et n'apportent rien de visuel. Ils doivent et
 5012    public bool HasFix => true;
 13
 514    private static readonly Regex Trailing = new(@"[ \t]+$", RegexOptions.Compiled);
 15
 16    public IEnumerable<Issue> Detect(string content, string[] lines, RuleContext ctx)
 17    {
 18        for (int i = 0; i < lines.Length; i++)
 19        {
 20            var line = lines[i];
 21            var m = Trailing.Match(line);
 22            if (!m.Success) continue;
 23
 24            var col = line.Length - m.Length + 1;
 25            var snippet = line.Length > 60
 26                ? "…" + line[^Math.Min(30, line.Length)..] + "⎵"
 27                : line + "⎵";
 28
 29            yield return new Issue(
 30                Id, Name, Severity,
 31                i + 1, col, snippet,
 32                $"Supprimer les {m.Length} caractere(s) blanc(s) en fin de ligne."
 33            );
 34        }
 35    }
 36
 37    public string? Fix(string content, RuleContext ctx)
 38    {
 2939        var lines = content.Split(new[] { "\r\n", "\n" }, StringSplitOptions.None);
 23440        for (int i = 0; i < lines.Length; i++)
 8841            lines[i] = Trailing.Replace(lines[i], "");
 2942        return string.Join("\n", lines);
 43    }
 44}