Partilhar via


CA2243: os literais da cadeia de caracteres de atributo devem ser analisados corretamente

TypeName

AttributeStringLiteralsShouldParseCorrectly

CheckId

CA2243

Categoria

Microsoft.Usage

Alteração Significativa

Sem Quebra

Causa

O parâmetro literal de cadeia de caracteres de um atributo não analisa corretamente para uma URL, GUID, ou a versão.

Descrição da Regra

Como os atributos são derivados de Attribute, e os atributos são usados em tempo de compilação, somente valores constantes podem ser passados para seus construtores.Atribua parâmetros que devem representar URL, GUIDs e as versões não podem ser digitadas como Uri, Guid, e Version, pois esses tipos não podem ser representados como constantes.Em vez disso, devem ser representados por cadeias de caracteres.

Porque o parâmetro é digitado como uma cadeia de caracteres, é possível que um parâmetro incorretamente formatado pode ser passado em tempo de compilação.

Esta regra usa uma nomeação heurística para localizar os parâmetros que representam o Uniform Resource Identifier (URI), um GUID (identificador global exclusivo) ou uma versão e verifica se o valor passado está correto.

Como Corrigir Violações

Altere a cadeia de caracteres de parâmetro em uma URL corretamente formado, a GUID, ou à versão.

Quando Suprimir Alertas

É seguro suprimir um aviso dessa regra se o parâmetro não representa uma URL, GUID, ou a versão.

Exemplo

O código a seguir mostra de exemplo para o AssemblyFileVersionAttribute que viola esta regra.

using System;
using System.Runtime.InteropServices;

namespace Samples
{
    [AttributeUsage(AttributeTargets.Assembly, Inherited = false)]
    [ComVisible(true)]
    public sealed class AssemblyFileVersionAttribute : Attribute
    {
        public AssemblyFileVersionAttribute(string version) { }

        public string Version { get; set; }
    }

    // Since the parameter is typed as a string, it is possible 
    // to pass an invalid version number at compile time. The rule 
    // would be violated by the following code: [assembly : AssemblyFileVersion("xxxxx")]
}

A regra é disparada pelo seguinte:

  • Parâmetros que contêm “versão” e não pode ser analisado a System.Version.

  • Parâmetros que contêm “GUID” e não pode ser analisado a System.Guid.

  • Os parâmetros que contêm “uri”, “urn,” ou “URL” e não pode ser analisado a System.Uri.

Consulte também

Referência

CA1054: os parâmetros de URI não devem ser cadeias de caracteres