Megosztás a következőn keresztül:


CA2243: Az attribútumsztring-literáloknak megfelelően kell elemezni

Tulajdonság Érték
Szabályazonosító CA2243
Cím Az attribútumsztring-literáloknak megfelelően kell elemezni
Kategória Használat
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Nem

Ok

Az attribútum sztringkonstansparamétere nem elemzi megfelelően az URL-címet, a GUID-t vagy a verziót.

Szabály leírása

Mivel az attribútumok származtatva vannak System.Attribute, és az attribútumok fordításkor használatosak, csak állandó értékek továbbíthatók konstruktoraiknak. Az URL-címeket, a grafikus felhasználói felületeket és a verziókat ábrázoló attribútumparaméterek nem írhatók be System.Uri, System.Guidés System.Version, mivel ezek a típusok nem jelölhetők állandóként. Ehelyett sztringekkel kell ábrázolni őket.

Mivel a paraméter sztringként van begépelve, előfordulhat, hogy a fordításkor helytelenül formázott paramétert lehet átadni.

Ez a szabály elnevezési heurisztikus használatával keres olyan paramétereket, amelyek egységes erőforrás-azonosítót (URI), globálisan egyedi azonosítót (GUID) vagy verziót jelölnek, és ellenőrzi, hogy az átadott érték helyes-e.

Szabálysértések kijavítása

Módosítsa a paramétersztringet helyesen formázott URL-címre, GUID-ra vagy Verzióra.

Mikor kell letiltani a figyelmeztetéseket?

Ha a paraméter nem url-címet, GUID-t vagy verziót jelöl, nyugodtan letilthatja a szabály figyelmeztetését.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

#pragma warning disable CA2243
// The code that's violating the rule is on this line.
#pragma warning restore CA2243

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

[*.{cs,vb}]
dotnet_diagnostic.CA2243.severity = none

További információ: Kódelemzési figyelmeztetések letiltása.

Példa

Az alábbi példa a szabályt megsértő AssemblyFileVersionAttribute kódját mutatja be.

[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 szabályt a következő paraméterek aktiválják:

  • Azok a paraméterek, amelyek "verziót" tartalmaznak, és nem elemezhetők a System.Version-ra.

  • Azok a paraméterek, amelyek "guid" értéket tartalmaznak, és nem elemezhetők a System.Guid-ra.

  • Az "uri", "urn" vagy "url" tartalmú paraméterek nem elemezhetők a System.Uri-nak.

Kapcsolódó információk