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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: