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