CA1311: Especificar uma cultura ou usar uma versão invariável
Property | Valor |
---|---|
ID da regra | CA1311 |
Título | Especificar uma cultura ou usar uma versão invariável |
Categoria | Globalização |
Correção interruptiva ou sem interrupção | Sem interrupção |
Habilitado por padrão no .NET 8 | Não |
Causa
Uma chamada é feita para String.ToUpper() ou String.ToLower() sem especificar uma cultura.
Descrição da regra
Especifique uma cultura ou use uma cultura invariável para evitar a dependência implícita da cultura atual ao chamar ToUpper
ou ToLower
. O uso de uma cultura invariável gera resultados consistentes, independentemente da cultura de um aplicativo.
Como corrigir violações
Em vez de chamar os métodos String.ToUpper() ou String.ToLower() sem parâmetros, chame ToUpper(CultureInfo), ToUpperInvariant(), ToLower(CultureInfo), ou ToLowerInvariant().
Exemplo
O seguinte snippet de código mostra uma violação da regra CA1311:
string s = "hello";
s = s.ToLower();
Dim s As String = "hello"
s.ToLower()
O seguinte snippet de código conserta a violação:
string s = "hello";
s = s.ToLowerInvariant();
Dim s As String = "hello"
s.ToLowerInvariant()
Quando suprimir avisos
É seguro suprimir um aviso dessa regra se você tem certeza de que Thread.CurrentCulture nunca mudará.
Suprimir um aviso
Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar a regra.
#pragma warning disable CA1311
// The code that's violating the rule is on this line.
#pragma warning restore CA1311
Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none
no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA1311.severity = none
Para obter mais informações, confira Como suprimir avisos de análise de código.