< Summary

Information
Class: AspxLint.Core.Rules.Ws003ConsecutiveBlankLines
Assembly: AspxLint.Core
File(s): D:\a\claude-aspx-lint\claude-aspx-lint\src\AspxLint.Core\Rules\Ws003ConsecutiveBlankLines.cs
Line coverage
100%
Covered lines: 7
Uncovered lines: 0
Coverable lines: 7
Total lines: 47
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
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%11100%

File(s)

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

#LineLine coverage
 1using System.Text.RegularExpressions;
 2
 3namespace AspxLint.Core.Rules;
 4
 5public sealed class Ws003ConsecutiveBlankLines : IRule
 6{
 2057    public string Id => "WS-003";
 308    public string Name => "Lignes vides multiples (>2)";
 279    public Severity Severity => Severity.Info;
 10    public string Description =>
 2511        "Plus de 2 lignes vides consecutives degradent la lisibilite sans apporter de separation visuelle utile.";
 4612    public bool HasFix => true;
 13
 14    // (\r?\n[ \t]*){3,}  — au moins 3 sauts de ligne entoures de blancs.
 315    private static readonly Regex FixRegex = new(@"(\r?\n[ \t]*){3,}", RegexOptions.Compiled);
 16
 17    public IEnumerable<Issue> Detect(string content, string[] lines, RuleContext ctx)
 18    {
 19        int consec = 0;
 20        int startLine = -1;
 21
 22        for (int i = 0; i < lines.Length; i++)
 23        {
 24            if (string.IsNullOrWhiteSpace(lines[i]))
 25            {
 26                if (consec == 0) startLine = i + 1;
 27                consec++;
 28            }
 29            else
 30            {
 31                if (consec > 2)
 32                    yield return new Issue(Id, Name, Severity,
 33                        startLine, 1,
 34                        $"{consec} lignes vides consecutives",
 35                        "Reduire a au maximum 2 lignes vides.");
 36                consec = 0;
 37            }
 38        }
 39        if (consec > 2)
 40            yield return new Issue(Id, Name, Severity,
 41                startLine, 1,
 42                $"{consec} lignes vides en fin de fichier",
 43                "Reduire a au maximum 2 lignes vides.");
 44    }
 45
 2146    public string? Fix(string content, RuleContext ctx) => FixRegex.Replace(content, "\n\n\n");
 47}