Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| 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.