CA2234: System.Uri-objektumok átadása sztringek helyett
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA2234 |
Cím | System.Uri-objektumok átadása sztringek helyett |
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
A metódus olyan metódust hív meg, amelynek sztringparamétere "uri", "Uri", "urn", "Urn", "url" vagy "URL" értéket tartalmaz, és a metódus deklarálási típusa tartalmaz egy paraméterrel rendelkező System.Uri metódust.
Ez a szabály alapértelmezés szerint csak külsőleg látható metódusokat és típusokat tekint meg, de ez konfigurálható.
Szabály leírása
A paraméternevek a teveházi konvenciók alapján jogkivonatokra lesznek felosztva, majd a rendszer ellenőrzi, hogy az "uri", "Uri", "urn", "urn", "url" vagy "URL" értékkel egyenlő-e. Ha egyezés van, a paraméter egy egységes erőforrás-azonosítót (URI) jelöl. Az URI sztring-ábrázolása hajlamos elemzési és kódolási hibákra, és biztonsági résekhez vezethet. Az Uri osztály ezeket a szolgáltatásokat biztonságosan és biztonságosan biztosítja. Ha két olyan túlterhelés közül választhat, amelyek csak az URI-k ábrázolása tekintetében különböznek, a felhasználónak ki kell választania azt a túlterhelést, amely argumentumot Uri vesz igénybe.
Szabálysértések kijavítása
A szabály megsértésének kijavításához hívja meg az argumentumot tartalmazó túlterhelést Uri .
Mikor kell letiltani a figyelmeztetéseket?
Biztonságosan letilthatja a szabály figyelmeztetését, ha a sztringparaméter nem URI-t jelöl.
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 CA2234
// The code that's violating the rule is on this line.
#pragma warning restore CA2234
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.CA2234.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
Kód konfigurálása elemzéshez
A következő beállítással konfigurálhatja, hogy a kódbázis mely részein futtassa ezt a szabályt.
Ezt a beállítást konfigurálhatja csak erre a szabályra, az összes szabályra, vagy az ebben a kategóriában (Használat) érvényes összes szabályra. További információ: Kódminőségi szabály konfigurációs beállításai.
Adott API-felületek belefoglalása
A kódbázis azon részeit konfigurálhatja, amelyeken futtathatja ezt a szabályt az akadálymentességük alapján. Ha például meg szeretné adni, hogy a szabály csak a nem nyilvános API-felületen fusson, adja hozzá a következő kulcs-érték párot a projekt egyik .editorconfig fájljához:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Példa
Az alábbi példa egy metódust mutat be, ErrorProne
amely megsérti a szabályt és egy metódust, SaferWay
amely helyesen hívja meg a túlterhelést Uri :
Imports System
Namespace ca2234
Class History
Friend Sub AddToHistory(uriString As String)
End Sub
Friend Sub AddToHistory(uriType As Uri)
End Sub
End Class
Public Class Browser
Dim uriHistory As New History()
Sub ErrorProne()
uriHistory.AddToHistory("http://www.adventure-works.com")
End Sub
Sub SaferWay()
Try
Dim newUri As New Uri("http://www.adventure-works.com")
uriHistory.AddToHistory(newUri)
Catch uriException As UriFormatException
End Try
End Sub
End Class
End Namespace
class History
{
internal void AddToHistory(string uriString) { }
internal void AddToHistory(Uri uriType) { }
}
public class Browser
{
History uriHistory = new History();
public void ErrorProne()
{
uriHistory.AddToHistory("http://www.adventure-works.com");
}
public void SaferWay()
{
try
{
Uri newUri = new Uri("http://www.adventure-works.com");
uriHistory.AddToHistory(newUri);
}
catch (UriFormatException) { }
}
}