Compartilhar via


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 8 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.