< Summary

Information
Class: AspxLint.Core.Rules.Asp005ServerTagSpaces
Assembly: AspxLint.Core
File(s): D:\a\claude-aspx-lint\claude-aspx-lint\src\AspxLint.Core\Rules\Asp005ServerTagSpaces.cs
Line coverage
100%
Covered lines: 13
Uncovered lines: 0
Coverable lines: 13
Total lines: 39
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\Asp005ServerTagSpaces.cs

#LineLine coverage
 1using System.Text.RegularExpressions;
 2
 3namespace AspxLint.Core.Rules;
 4
 5public sealed class Asp005ServerTagSpaces : IRule
 6{
 2077    public string Id => "ASP-005";
 288    public string Name => "Espace dans la directive ASP <% %>";
 259    public Severity Severity => Severity.Warning;
 10    public string Description =>
 2511        "Pour la lisibilite, un espace est recommande apres <% et avant %> dans les blocs de code serveur (<%= valeur %>
 4612    public bool HasFix => true;
 13
 514    private static readonly Regex DetectRegex =
 515        new(@"<%[=#:]?[^\s][^%]*?[^\s]%>", RegexOptions.Compiled);
 16
 517    private static readonly Regex FixRegex =
 518        new(@"<%([=#:]?)([^\s%][^%]*?[^\s%])%>", RegexOptions.Compiled);
 19
 20    public IEnumerable<Issue> Detect(string content, string[] lines, RuleContext ctx)
 21    {
 22        for (int i = 0; i < lines.Length; i++)
 23        {
 24            foreach (Match m in DetectRegex.Matches(lines[i]))
 25            {
 26                if (m.Value.Contains('@')) continue; // <%@ Page ... %> et autres directives
 27                yield return new Issue(Id, Name, Severity,
 28                    i + 1, m.Index + 1, m.Value,
 29                    "Espace recommande apres <% et avant %>.");
 30            }
 31        }
 32    }
 33
 34    public string? Fix(string content, RuleContext ctx) =>
 2135        FixRegex.Replace(content, m =>
 2136            m.Value.Contains('@')
 2137                ? m.Value
 2138                : $"<%{m.Groups[1].Value} {m.Groups[2].Value} %>");
 39}