CA2243: Literály řetězce atributu by se měly správně analyzovat
Název_typu |
AttributeStringLiteralsShouldParseCorrectly |
CheckId |
CA2243 |
Kategorie |
Microsoft.Usage |
Změnit rozdělení |
Bez rozdělení |
Literál parametr řetězec atributu nesprávně analyzuje adresu URL, identifikátor GUID nebo verze.
Protože atributy jsou odvozeny z Attributea atributy se používají v době kompilace, pouze konstantní hodnoty mohou být předány do jejich konstruktory.Atribut parametry, které musí představovat verze, identifikátory GUID a adresy URL nelze zadat jako Uri, Guid, a Version, protože tyto typy nemůže být reprezentován jako konstanty.Místo toho se musí být zastoupena řetězce.
Protože je parametr zadán jako řetězec, je nesprávně formátovaný parametru nelze předávat v době kompilace.
Toto pravidlo používá pojmenování Heuristika získat parametry, které představují uniform resource identifier (URI) globálně jedinečný identifikátor (GUID) nebo verzi a ověří předané hodnotě.
Změňte řetězec parametru správně vytvořené adresy URL, identifikátor GUID nebo verze.
Je bezpečné potlačit varování od tohoto pravidla, pokud je parametr nepředstavuje URL, identifikátor GUID nebo verze.
Následující příklad zobrazuje kód pro AssemblyFileVersionAttribute, který porušuje pravidlo.
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")]
}
Pravidlo spouští následující:
Parametry, které obsahují 'verze' a k System.Version nelze analyzovat.
Parametry, které obsahují guid"a k System.Guid nelze analyzovat.
Parametry, které obsahují 'uri', 'urn' nebo 'url' a k System.Uri nelze analyzovat.