CA1856: Uso incorreto do atributo ConstantExpected
Propriedade | Valor |
---|---|
ID da regra | CA1856 |
Título | Uso incorreto do atributo ConstantExpected |
Categoria | Desempenho |
Correção interruptiva ou sem interrupção | Sem interrupção |
Habilitado por padrão no .NET 9 | Como erro |
Causa
O atributo ConstantExpectedAttribute não é aplicado corretamente em um parâmetro.
Descrição da regra
Essa regra sinaliza usos incorretos do atributo ConstantExpectedAttribute, como:
- O valor Min ou Max não é compatível com o tipo de parâmetro.
- Não há suporte para o tipo de parâmetro para o atributo ConstantExpectedAttribute.
- Os valores Min e Max são invertidos.
- O valor Min ou Max não se encaixa dentro dos limites de valor do parâmetro.
Como corrigir violações
Corrija seu código conforme indicado pela mensagem de erro específica recebida.
Exemplo
O snippet de código a seguir mostra violações da CA1856:
using System.Diagnostics.CodeAnalysis;
// Violation - value not compatible with parameter type.
static void M1([ConstantExpected(Min = "a")] char val) { }
// Violation - unsupported type for attribute.
static void M2([ConstantExpected] decimal val) { }
// Violation - Min and Max values are inverted.
static void M3([ConstantExpected(Max = 0, Min = 1)] int val) { }
// Violation - value does not fit within the parameter value bounds.
static void M4([ConstantExpected(Min = long.MinValue)] int val) { }
O snippet de código a seguir corrige as violações:
using System.Diagnostics.CodeAnalysis;
static void M1([ConstantExpected(Min = 'a')] char val) { }
static void M2(decimal val) { }
static void M3([ConstantExpected(Min = 0, Max = 1)] int val) { }
static void M4([ConstantExpected(Min = int.MinValue)] int val) { }
Quando suprimir avisos
Uma violação dessa regra indica um erro em seu código e sempre deve ser corrigida.
Colaborar conosco no GitHub
A fonte deste conteúdo pode ser encontrada no GitHub, onde você também pode criar e revisar problemas e solicitações de pull. Para obter mais informações, confira o nosso guia para colaboradores.