Partilhar via


CA1875: Use 'Regex.Count'

Propriedade Valor
ID da regra CA1875
Título Utilize Regex.Count
Categoria Desempenho
A correção é invasiva ou não invasiva Non-breaking
Habilitado por padrão no .NET 10 Como sugestão

Motivo

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

Descrição da regra

Regex.Count é mais simples e mais rápido do que Regex.Matches(...).Count. O Count() método é otimizado para contar partidas sem materializar o completo MatchCollection. Ligar Matches() e depois acessar .Count faz um trabalho desnecessário que pode afetar o desempenho.

Como corrigir violações

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

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

Example

O trecho de código a seguir mostra uma violação de 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 trecho 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 apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar 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 de um arquivo, pasta ou projeto, defina sua gravidade como 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