Partilhar via


CA1856: Uso incorreto do atributo ConstantExpected

Property valor
ID da regra CA1856
Título Uso incorreto do atributo ConstantExpected
Categoria Desempenho
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 8 Como erro

Motivo

O ConstantExpectedAttribute atributo não é aplicado corretamente em um parâmetro.

Descrição da regra

Esta regra sinaliza usos incorretos do ConstantExpectedAttribute atributo, como:

  • O Min valor ou Max não é compatível com o tipo de parâmetro.
  • O tipo de parâmetro não é suportado para o ConstantExpectedAttribute atributo.
  • Os Min valores e Max são invertidos.
  • O Min valor 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 que você recebe.

Exemplo

O trecho de código a seguir mostra violações de 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 trecho 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 desta regra indica um erro no seu código e deve ser sempre corrigida.