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.