Compartilhar via


CA1875: Usar 'Regex.Count'

Propriedade Value
ID da regra CA1875
Title Utilize Regex.Count
Categoria Desempenho
Correção é disruptiva ou não disruptiva Non-breaking
Habilitado por padrão no .NET 10 Como sugestão

Motivo

A Count propriedade do MatchCollection a partir Regex.Matches é usada para obter a contagem de correspondências.

Descrição da regra

Regex.Count é mais simples e mais rápido que Regex.Matches(...).Count. O Count() método é otimizado para contagem de correspondências sem materializar o total MatchCollection. Chamar Matches() e acessar .Count faz um trabalho desnecessário que pode afetar o desempenho.

Como corrigir violações

Substitua chamadas por Regex.Matches(...).CountRegex.Count(...).

Uma correção de código que executa automaticamente essa transformação está disponível.

Example

O snippet de código a seguir mostra uma violação da CA1875:

using System.Text.RegularExpressions;

class Example
{
    public int CountWords(string text)
    {
        // Violation
        return Regex.Matches(text, @"\b\w+\b").Count;
    }
}
Imports System.Text.RegularExpressions

Class Example
    Public Function CountWords(text As String) As Integer
        ' Violation
        Return Regex.Matches(text, "\b\w+\b").Count
    End Function
End Class

O snippet de código a seguir corrige a violação:

using System.Text.RegularExpressions;

class Example
{
    public int CountWords(string text)
    {
        // Fixed
        return Regex.Count(text, @"\b\w+\b");
    }
}
Imports System.Text.RegularExpressions

Class Example
    Public Function CountWords(text As String) As Integer
        ' Fixed
        Return Regex.Count(text, "\b\w+\b")
    End Function
End Class

Quando suprimir avisos

É seguro suprimir um aviso dessa regra se o desempenho não for uma preocupação ou se você estiver direcionando uma versão do .NET que não inclua Regex.Count (antes do .NET 7).

Suprimir um aviso

Se você quiser suprimir apenas uma única violação, adicione diretivas de pré-processamento ao arquivo de origem para desabilitar e, em seguida, habilitar novamente a regra.

#pragma warning disable CA1875
// The code that's violating the rule is on this line.
#pragma warning restore CA1875

Para desabilitar a regra para um arquivo, pasta ou projeto, defina sua severidade none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.CA1875.severity = none

Para obter mais informações, consulte Como suprimir avisos de análise de código.

Consulte também