Literais da cadeia de caracteres de atributo devem analisar corretamente

TypeName

AttributeStringLiteralsShouldParseCorrectly

CheckId

CA2243

Category (Categoria)

Microsoft.uso

Quebrando alterar

Não separável

Causa

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

Descrição da regra

Como atributos são derivados de System.Attribute, e atributos são usados em time de compilar, somente valores constante podem ser passados para seus construtores. Parâmetros do atributo que devem representar URLs, GUIDs e versões não podem ser digitados sistema autônomo System.Uri, System.Guid, e System.Version, porque esses tipos não podem ser representados sistema autônomo constantes. Em vez disso, eles devem ser representados por cadeias de caracteres.

sistema autônomo o parâmetro é digitado sistema autônomo uma seqüência de caracteres, é possível que pode ser passado um parâmetro formatado incorretamente no momento da compilar.

Esta regra usa uma heurística de nomenclatura para localizar os parâmetros que representam um identificador de recurso uniforme (URI), um identificador global exclusivo (GUID) ou uma versão e verifica se o valor transmitido é correto.

Como corrigir violações

Altere a seqüência de parâmetros para um URL, GUID ou versão corretamente formado.

Quando suprimir avisos

É seguro eliminar um aviso essa regra se o parâmetro não representa um URL, GUID ou versão.

Exemplo

O exemplo a seguir mostra o código para AssemblyFileVersionAttribute que violam essa 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 é acionada pelo seguinte:

  • Parâmetros que contêm ‘ versão ’ e não pode ser analisado para sistema.Version.

  • Parâmetros que contêm ‘ guid ’ e não pode ser analisado para sistema.GUID.

  • Parâmetros que contêm ‘ uri ’, 'urn' ou ‘ url ’ e não pode ser analisado para sistema.URI.

Consulte também

Referência

Parâmetros da URI não devem ser seqüências de caracteres